1. 程式人生 > >Servlet中Web.xml的配置詳解(一)

Servlet中Web.xml的配置詳解(一)

1 定義頭和根元素

部署描述符檔案就像所有XML檔案一樣,必須以一個XML頭開始。這個頭宣告可以使用的XML版本並給出檔案的字元編碼。
DOCYTPE宣告必須立即出現在此頭之後。這個宣告告訴伺服器適用的servlet規範的版本(如2.2或2.3)並指定管理此檔案其餘部分內容的語法的DTD(Document Type Definition,文件型別定義)。
所有部署描述符檔案的頂層(根)元素為web-app。請注意,XML元素不像HTML,他們是大小寫敏感的。因此,web-App和WEB-APP都是不合法的,web-app必須用小寫。

2 部署描述符檔案內的元素次序

XML元素不僅是大小寫敏感的,而且它們還對出現在其他元素中的次序敏感。例如,XML頭必須是檔案中的第一項,DOCTYPE宣告必須是第二項,而web-app元素必須是第三項。在web-app元素內,元素的次序也很重要。伺服器不一定強制要求這種次序,但它們允許(實際上有些伺服器就是這樣做的)完全拒絕執行含有次序不正確的元素的Web應用。這表示使用非標準元素次序的web.xml檔案是不可移植的。
下面的列表給出了所有可直接出現在web-app元素內的合法元素所必需的次序。例如,此列表說明servlet
元素必須出現在所有servlet-mapping元素之前。請注意,所有這些元素都是可選的。因此,可以省略掉某一元素,但不能把它放於不正確的位置。
l icon icon元素指出IDE和GUI工具用來表示Web應用的一個和兩個影象檔案的位置。
l display-name display-name元素提供GUI工具可能會用來標記這個特定的Web應用的一個名稱。
l description description元素給出與此有關的說明性文字。
l context-param context-param元素宣告應用範圍內的初始化引數。
l filter 過濾器元素將一個名字與一個實現javax.servlet.Filter介面的類相關聯。
l filter-mapping
一旦命名了一個過濾器,就要利用filter-mapping元素把它與一個或多個servlet或JSP頁面相關聯。
llistener servlet API的版本2.3增加了對事件監聽程式的支援,事件監聽程式在建立、修改和刪除會話或servlet環境時得到通知。Listener元素指出事件監聽程式類。
lservlet 在向servlet或JSP頁面制定初始化引數或定製URL時,必須首先命名servlet或JSP頁面。Servlet元素就是用來完成此項任務的。
lservlet-mapping 伺服器一般為servlet提供一個預設的URL:http://host/webAppPrefix/servlet/ServletName。但是,常常會更改這個URL,以便servlet可以訪問初始化引數或更容易地處理相對URL。在更改預設URL時,使用servlet-mapping元素。
lsession-config
如果某個會話在一定時間內未被訪問,伺服器可以拋棄它以節省記憶體。可通過使用HttpSession的setMaxInactiveInterval方法明確設定單個會話物件的超時值,或者可利用session-config元素制定預設超時值。
lmime-mapping 如果Web應用具有想到特殊的檔案,希望能保證給他們分配特定的MIME型別,則mime-mapping元素提供這種保證。
lwelcom-file-list welcome-file-list元素指示伺服器在收到引用一個目錄名而不是檔名的URL時,使用哪個檔案。
l error-page error-page元素使得在返回特定HTTP狀態程式碼時,或者特定型別的異常被丟擲時,能夠制定將要顯示的頁面。
l taglib taglib元素對標記庫描述符檔案(Tag Libraryu Descriptor file)指定別名。此功能使你能夠更改TLD檔案的位置,而不用編輯使用這些檔案的JSP頁面。
l resource-env-ref resource-env-ref元素宣告與資源相關的一個管理物件。
l resource-ref resource-ref元素宣告一個資源工廠使用的外部資源。
l security-constraint security-constraint元素制定應該保護的URL。它與login-config元素聯合使用
l login-config 用login-config元素來指定伺服器應該怎樣給試圖訪問受保護頁面的使用者授權。它與sercurity-constraint元素聯合使用。
l security-role security-role元素給出安全形色的一個列表,這些角色將出現在servlet元素內的security-role-ref元素的role-name子元素中。分別地宣告角色可使高階IDE處理安全資訊更為容易。
l env-entry env-entry元素宣告Web應用的環境項。
l ejb-ref ejb-ref元素宣告一個EJB的主目錄的引用。
l ejb-local-ref ejb-local-ref元素宣告一個EJB的本地主目錄的應用。

3 分配名稱和定製的UL

在web.xml中完成的一個最常見的任務是對servlet或JSP頁面給出名稱和定製的URL。用servlet元素分配名稱,使用servlet-mapping元素將定製的URL與剛分配的名稱相關聯。
3.1 分配名稱
為了提供初始化引數,對servlet或JSP頁面定義一個定製URL或分配一個安全形色,必須首先給servlet或JSP頁面一個名稱。可通過servlet元素分配一個名稱。最常見的格式包括servlet-name和servlet-class子元素(在web-app元素內),如下所示:
<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>moreservlets.TestServlet</servlet-class>
</servlet>