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 ,如下圖所示 -
下載完成後,將它解壓到一個合適的位置,如: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應用程序就成功運行了。