Servlet入門程式


在這節中,我們將演示如何手動來建立一個簡單的Servlet應用程式。需要遵循以下步驟,這些步驟對於所有Web伺服器是常見的。在這個範例中,使用的是Apache Tomcat8伺服器。Apache Tomcat是用於測試servlet和JSP技術的開源Web伺服器。

這一節非常關鍵,希望您能仔細按照步驟說明來操作。能否手動開發一個Servlet執行成功,可能會影響到學習的熱情。

在開始之前,需要安裝兩個軟體:

  • Java/JDK 8
  • Tomcat 8

注意: Java安裝好後,需要將它加到系統的環境變數中。可參考:/20/206/8013.html

安裝Tomcat

在開始編寫程式碼之前,需要您自己下載最新版本的Tomcat Server並將其安裝在您的計算機上。

開啟網址: http://tomcat.apache.org/download-80.cgi 下載 apache-tomcat-8.5.23-windows-x64.zip ,如下圖所示 -

下載完成後,將它解壓到一個合適的位置,如:D:\software\apache-tomcat-8.5.23 , 然後執行Tomcat伺服器測試執行情況,可通過雙擊檔案:D:\software\apache-tomcat-8.5.23\bin\startup.bat 來啟動,如下所示 -

測試執行Tomcat伺服器執行情況,開啟瀏覽器,存取地址:http://localhost:8080 應該會看到類似的介面 -

在機器上安裝Tomcat Server後,請按照以下步驟操作:

  1. 建立應用程式目錄結構。
  2. 建立一個Servlet
  3. 編譯Servlet
  4. 建立應用程式部署描述符
  5. 啟動伺服器並部署應用程式

下面詳細介紹所有這五個步驟,首先建立第一個Servlet應用程式。

1.建立應用程式目錄結構

Sun Microsystem定義了建立servlet應用程式必須遵循的目錄結構。這裡以一個名稱為:First 的應用為範例,介紹一個典型servlet應用程式的目錄結構 -

Apache-Tomcat\webapps目錄下建立上述目錄結構。所有HTML,靜態檔案(影象,css等)都直接儲存在Web應用程式(webapps)檔案夾下。 而所有Servlet類都儲存在classes檔案夾中。

web.xml(部署描述符)檔案儲存在WEB-INF檔案夾下。

2.建立一個Servlet

建立servlet有三種不同的方法。

  1. 通過實現Servlet介面
  2. 擴充套件GenericServlet
  3. 通過擴充套件HttpServlet

但是大部分servlet是通過擴充套件HttpServlet抽象類建立的。如前所述HttpServlet給出了Servlet介面的service()方法的定義。我們將建立Servlet類但不需要覆蓋service()方法。Servlet類將僅覆蓋doGet()doPost()方法。

servlet的請求進入時,Web容器首先將呼叫servletservice()方法,並根據service()方法的請求型別來呼叫doGet()doPost()方法)。

注意:預設情況下,請求是Get請求。

建立一個類:MyServlet.java,並將這個類檔案放在F:\worksp\servlet\First目錄下,其程式碼如下所示 -

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class MyServlet extends HttpServlet
{
 public void doGet(HttpServletRequest request,HttpServletResponse response) 
                     throws ServletException, IOException 
 {
   response.setContentType("text/html");
   PrintWriter out = response.getWriter();
   out.println("<html><body>");
   out.println("<h2 style='text-align:center'>Hello Servlet ~</h2>");
   out.println("</body></html>");
 }
}

然後編譯它(在下一步中解釋),並將類生成的MyServlet.class檔案貼上到WEB-INF/classes/目錄中,此WEB-INF/classes/目錄必須在Tomcat/webapps目錄中建立。

3.編譯Servlet類

要編譯Servlet,需要一個JAR檔案。不同的伺服器需要不同的JAR檔案。在Apache Tomcat伺服器需要的是servlet-api.jar檔案來編譯servlet類。

編譯Servlet的步驟如下 -

  • 首先需要確定是否已將JDK加到系統環境變數中,可通過在命令列上輸入驗證:java -version,如已新增,則應該返回類似的結果 -
  • 下載servlet-api.jar檔案,下載地址:http://mvnrepository.com/artifact/javax.servlet/servlet-api/3.0-alpha-1 或者從Tomcat的安裝目錄:D:\software\apache-tomcat-8.5.23\lib 中找到。
  • 將下載好的servlet-api.jar檔案貼上到一個目錄,如:F:\worksp\servlet\library目錄下,用於編譯Servlet類。
  • 編譯MyServlet類,如下所示 -
F:\worksp\servlet\First> javac -Djava.ext.dirs=F:\worksp\servlet\library MyServlet.java

如果編譯沒有問題,那麼將會在當前目錄下生成一個類檔案:MyServlet.class ,然後將類檔案MyServlet.class貼上到F:\worksp\servlet\First\WEB-INF\classes目錄中。

4.建立部署描述符

部署描述符(DD)是由Web容器用於執行Servlet和JSP頁面的XML文件。部署描述符用於完成幾個重要的工作,如:

  • 將URL對映到Servlet類
  • 初始化引數
  • 定義錯誤頁面
  • 安全形色
  • 宣告標籤庫

稍後將詳細討論所有這些。現在來看看我們為這個Web應用程式建立一個簡單的web.xml檔案。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>MyFirstServlet</display-name>
  <welcome-file-list>
    <!--// 預設主頁-->
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>MyServlet</display-name><!--// 類的顯示名稱 -->
    <servlet-name>MyServlet</servlet-name><!--// 類的別名 -->
    <servlet-class>MyServlet</servlet-class><!--// 類的名稱 -->
  </servlet>
  <servlet-mapping>
    <servlet-name>MyServlet</servlet-name><!--// 類的別名 -->
    <url-pattern>/hello</url-pattern><!--// 請求此類的對應URL -->
  </servlet-mapping>
</web-app>

web.xml檔案元素的說明

web.xml檔案中的元素太多。以下是上述web.xml檔案中使用的一些元素的說明 -

  • <web-app>表示整個應用程式。
  • <servlet><web-app>的子元素,代表servlet。
  • <servlet-name><servlet>的子元素,表示servlet的名稱。
  • <servlet-class><servlet>的子元素,表示servlet的類。
  • <servlet-mapping><web-app>的子元素。它用於對映servlet。
  • <url-pattern><servlet-mapping>的子元素。用戶端使用此模式來呼叫servlet。

5.啟動伺服器並部署應用程式

將目錄F:\worksp\servlet\First 拷貝到 D:\software\apache-tomcat-8.5.23\webapps 下部署這個應用程式。

雙擊startup.bat檔案啟動Apache Tomcat伺服器。

或者,在Windows機器上在命令列提示執行以下命令。

D:\software\apache-tomcat-8.5.23\bin> startup.bat

執行Servlet應用程式,開啟瀏覽器輸入並存取網址:http:localhost:8080/First/hello ,應該會看到類似的結果 -

這樣,我們的第一個Servlet應用程式就成功執行了。