註:學習此篇教程之前請確定完成Servlet開發環境的配置。
一、檔案組織
首先看一下之前在Eclipse中建立的Dynamic Web Project目錄結構:
重要的目錄說明:
WEB-INF:此目錄中存在的資源項目不會被列入應用程式根目錄直接存取的項。
WEB-INF/web.xml:部署描述檔案(需要手工建立)。
WEB-INF/classes:放置自訂的類(.class),必須包括包結構。
WEB-INF/lib:放置應用程式用到的JAR檔案。
二、部署
1)使用@@WebServlet
在Servlet3.0中,可以使用標註(Annotation)來告知容器哪些Servlet會提供服務以及額外資訊。
例如
@WebServlet("/Hello.view")
public class HelloServlet extends HttpServlet
只要在Servlet上設定@WebServlet,容器就會自動讀取當中的資訊。上面的例子告訴容器,如果請求的URL是
"/hello.view",則由HelloServlet的執行個體來提供服務。
2)使用web.xml
使用web.xml是更加通用的部署方法,會比較麻煩一些。
web.xml中的設定會覆蓋Servlet中的標註設定。
還是基於之前的例子,我們用web.xml來部署一下。
在WEB-INF中建立web.xml,敲入下面的代碼:
<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"><servlet><servlet-name>HelloServlet</servlet-name><servlet-class>HelloServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>HelloServlet</servlet-name><url-pattern>/Hello</url-pattern></servlet-mapping></web-app>
解釋一下幾個重要的標籤:
<servlet>元素定義了一個servlet執行個體。<servlet>元素必須包含了<servlet-name>和<servlet-class>兩個子項目,也可能包括其他初始化參數。
<servlet-name>元素定義了servlet執行個體唯一的名字。每一個servlet執行個體必須有唯一的名字,這個名字僅用來配合對此執行個體的URL映射,所以不一定要和servlet類或servlet的URL一致。
<servlet-class>元素告訴servlet容器如何構建一個servlet類的執行個體。<servlet-class>元素包含兩部分,包含servlet的package名和servlet類的類名。
<servlet-mapping>用於定義映射。
<load-on-startup>1</load-on-startup>表示在應用啟動的時候就將Servlet類載入。
設定完成之後,我們就只能通過“http://localhost:8080/ServletTest1/Hello”來訪問Servlet而不是之前的Hello.view,因為@WebServlet被覆蓋掉了。