Servlet入門程序

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

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

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

  • Java/JDK 8
  • Tomcat 8

注意: Java安裝好後,需要將它加到系統的環境變量中。可參考:http://www.yiibai.com/java/java\_environment\_setup.html

安裝Tomcat

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

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

Servlet入門程序

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

Servlet入門程序

測試運行Tomcat服務器運行情況,打開瀏覽器,訪問地址:http://localhost:8080 應該會看到類似的界面 -

Servlet入門程序

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

  1. 創建應用程序目錄結構。
  2. 創建一個Servlet
  3. 編譯Servlet
  4. 創建應用程序部署描述符
  5. 啓動服務器並部署應用程序

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

1.創建應用程序目錄結構

Sun Microsystem定義了創建servlet應用程序必須遵循的目錄結構。這裏以一個名稱爲:First 的應用爲示例,介紹一個典型servlet應用程序的目錄結構 -

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入門程序
  • 下載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入門程序

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