標籤:電腦 header ams http 資源 簡單 技術分享 char 應用
原文地址: http://blog.codingme.net/post/java-web-01-first-servlet
什麼是Servlet?
Java Servlet 是運行在 Web 服務器或應用伺服器上的程式,它是作為來自 網頁瀏覽器或其他 HTTP 用戶端的請求和 HTTP 伺服器上的資料庫或應用程式之間的中介層。
使用 Servlet,您可以收集來自網頁表單的使用者輸入,呈現來自資料庫或者其他源的記錄,還可以動態建立網頁。
Java Servlet 通常情況下與使用 CGI(Common Gateway Interface,公用網關介面)實現的程式可以達到異曲同工的效果。但是相比於 CGI,Servlet 有以下幾點優勢:
- 效能明顯更好。
- Servlet 在 Web 服務器的地址空間內執行。這樣它就沒有必要再建立一個單獨的進程來處理每個用戶端請求。
- Servlet 是獨立於平台的,因為它們是用 Java 編寫的。
- 伺服器上的 Java 安全管理器執行了一系列限制,以保護伺服器電腦上的資源。因此,Servlet 是可信的。
- Java 類庫的全部功能對 Servlet 來說都是可用的。它可以通過 sockets 和 RMI 機制與 applets、資料庫或其他軟體進行互動。
編寫Servlet
Servlet本質上是一個Java類,建立一個Servlet很簡單,就是定義一個Java類,這個類繼承自javax.servlet.http.HttpServlet
類,覆蓋其中的doGet和doPost方法,在doGet和doPost中編寫處理請求的代碼。
由於 Servlet 不是 Java 平台標準版的組成部分,所以必須添加jar包:servlet-api.jar
可以在Tomcat下lib目錄下找到,也可自行下載添加。
樣本:FirstServlet.java(注意看代碼注釋)
package net.codingme.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * 第一個servlet測試 * */// @WebServlet("/firstServlet") public class FirstServlet extends HttpServlet { private static final long serialVersionUID = 1L; public FirstServlet() { super(); } // get請求處理 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //設定響應的文本類型和字元編碼 response.setContentType("text/html;charset=UTF-8"); //通過輸出資料流向用戶端做出響應 PrintWriter out = response.getWriter(); out.println("<html><body>"); out.println("<h3>firest servlet</h3>"); out.println("</body></html>"); out.close(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}
Web請求方式除了GET和POST其實還有很多中,例如PUT、DELETE等,GET和POST則最為常用,所以通常只覆蓋doGet和doPost方法。response.setContentType(“text/html;charset=UTF-8”);用於設定響應的文本類型和編碼方式,通過響應對象獲得輸出資料流對象out,用於向用戶端瀏覽器輸出響應內容,代碼中輸出的HTML標記,這實際上是一個動態Web的頁面。
配置Servlet
Servlet編寫完成之後,需要在工程WEBROOT/WEB-INF/web.xml
中進行配置才可以生效,web.xml是Web應用的主設定檔,包含Web應用配置的主要資訊。
在web.xml中根項目<web-app>
中配置Servlet,代碼如下:
<servlet> <servlet-name>first</servlet-name> <servlet-class>net.codingme.servlet.FirstServlet</servlet-class></servlet><servlet-mapping> <servlet-name>first</servlet-name> <url-pattern>/firstServlet</url-pattern></servlet-mapping>
配置解釋:
<servlet> <servlet-name>servlet名</servlet-name> <servlet-class>servlet的class的全名</servlet-class></servlet><servlet-mapping> <servlet-name>servlet名</servlet-name> <url-pattern>servlet的訪問路徑</url-pattern></servlet-mapping>
如果Servlet版本是3.0及以上的,可以使用註解進行配置,省去web.xml中的配置。配置方式如:
package net.codingme.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * 第一個servlet測試 * 使用註解 */@WebServlet("/firstServlet") public class FirstServlet extends HttpServlet { private static final long serialVersionUID = 1L; public FirstServlet() { super(); } . . .
運行Servlet
Servlet配置完成之後,把Servlet所在工程項目部署到Web伺服器上並啟動Web伺服器,此時Servlet將可以被訪問到,訪問地址格式為
協議://伺服器位址:連接埠號碼/WEB應用程式名稱/Servlet的訪問路徑
Web Server可以定位到訪問具體哪一個Servlet:
- 尋找web.xml中Servlet配置資訊中的
<url-pattern>
值與請求路徑相匹配的項
- 通過尋找結果,訪問到對應的(
<servlet-mapping>
中<servlet-name>
與<servlet>
中<servlet-name>
值相等,)<servlet-class>
,可以訪問到指定的Servlet類,Web伺服器將在第一次訪問Servlet時執行個體化Servlet一個對象,為用戶端提供響應服務。
訪問Servlet
訪問Servlet有三種方式
- 直接在瀏覽器地址中輸入訪問路徑來訪問
- 通過超連結來訪問
- 通過提交表單來訪問
訪問測試
總結:Servlet開發步驟,執行流程
Servlet開發步驟:
- 編寫Servlet,編寫一個Java類,繼承HttpServlet類並覆蓋doGet和doPost方法
- 在設定檔web.xml中配置Servlet(Servlet3.0以上版本可以使用註解)
- 將Servlet所在Java Web項目部署到Web伺服器上,例如Tomcat
- 啟動Web伺服器
- 請求訪問Servlet
Servlet執行流程:
- 用戶端瀏覽器向Web伺服器發送請求訪問某一個Servlet
- Web伺服器根據配置資訊定位到具體的Servlet
- 如果這個Servlet是第一次被訪問,此時Servlet對象在記憶體中不存在,則建立這個Servlet對象,如果這個Servlet已經被訪問過,則Servlet的對象已經存在記憶體中,然後建立一個線程操作這個Servlet對象,完成具體功能。
- 獲得運行結果,通過響應對象(response)設定響應參數並將結果返回到用戶端。
- 用戶端將相應結果顯示在瀏覽器中。
WEB - Servlet基礎,編寫第一個Servlet