關於Java Web應用中的配置描述符web.xml

一.web.xml概述

位於每個Web應用的WEB-INF路徑下的web.xml文件被稱爲配置描述符,這個 web.xml文件對於Java Web應用十分重要,每個Java Web應用都必須包含一個web.xml文件,且必須放在WEB-INF路徑下。

對於Java Web應用而言,WEB-INF是一個特殊的文件夾,Web容器會包含該文件夾下的內容,客戶端瀏覽器無法訪問WEB-INF路徑下的任何內容。
Java Web應用的絕大部分內容都由web.xml文件來配置管理。我們後面介紹的如下內容都要通過web.xml文件進行配置管理:

(1)配置JSP。

(2)配置和管理Servlet。

(3)配置和管理Listener。

(4)配置和管理Filter。

(5)配置標籤庫。

(6)配置JSP屬性。

除此之外,web.xml還負責配置、管理如下常用內容:

(7)配置和管理JAAS授權認證。

(8)配置和管理資源引用。

(9)配置Web應用首頁。

比如,在web.xml文件中配置首頁使用welcome-file-list元素,該元素能包含多個welcome-file子元素,其中每個welcome-file子元素配置一個首頁。例如如下配置片段:

<!-- 配置Web應用的首頁列表 -->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

上面配置信息指定該Web應用的首頁依次是index.html、index.htm和index.jsp,意思是說:當Web應用中包含index.html頁面時,如果瀏覽者直接訪問該Web應用,系統將會把該頁面呈現給瀏覽者;當index.html頁面不存在時,則由index.htm頁面充當首頁,依此類推。

每個Web容器都會提供一個系統的web.xml文件,用於描述所有Web應用共同的配置屬性。例如,Tomcat的系統web.xml放在Tomcat的conf路徑下,而Jetty的系統web.xml文件放在Jetty的etc路徑下,文件名爲webdefault.xml。

 

二.具體元素描述

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

2 部署描述符文件內的元素次序

在web-app元素內,元素的次序也很重要。服務器不一定強制要求這種次序,但它們允許(實際上有些服務器就是這樣做的)完全拒絕執行含有次序不正確的元素的Web應用。這表示使用非標準元素次序的web.xml文件是不可移植的。
下面的列表給出了所有可直接出現在web-app元素內的合法元素所必需的次序。例如,此列表說明servlet元素必須出現在所有servlet-mapping元素之前。請注意,所有這些元素都是可選的。因此,可以省略掉某一元素,但不能把它放於不正確的位置。

(1)       icon:icon元素指出IDE和GUI工具用來表示Web應用的一個和兩個圖像文件的位置。

(2)       display-name:display-name元素提供的GUI工具可能用來標記這個特定的Web應用的一個名稱。

(3)       context-param:context-param元素聲明應用範圍內的初始化參數。

(4)       filter:filter過濾器元素將一個名字與一個實現javax.servlet.Filter接口的類相關聯。

(5)       filter-mapping:一旦命名了一個過濾器,就要利用filter-mapping元素把它與一個或多個servlet或JSP頁面相關聯。

(6)       listener:servlet API的版本2.3增加了對事件監聽程序的支持,事件監聽程序在建立、修改和刪除會話或servlet環境時得到通知。Listener元素指出事件監聽程序類。

(7)       servlet:在向servlet或JSP頁面制定初始化參數或定製URL時,必須首先命名servlet或JSP頁面。Servlet元素就是用來完成此項任務的。

(8)       servlet-mapping:服務器一般爲servlet提供一個缺省的URL:http://host/webAppPrefix/servlet/ServletName。但是,常常會更改這個URL,以便servlet可以訪問初始化參數或更容易地處理相對URL。在更改缺省URL時,使用servlet-mapping元素。

(9)       session-config:如果某個會話在一定時間內未被訪問,服務器可以拋棄它以節省內存。可通過使用HttpSession的setMaxInactiveInterval方法明確設置單個會話對象的超時值,或者可利用session-config元素制定缺省超時值。

(10)   mime-mapping:如果Web應用具有想到特殊的文件,希望能保證給他們分配特定的MIME類型,則mime-mapping元素提供這種保證。

(11)   welcom-file-list:welcome-file-list元素指示服務器在收到引用一個目錄名而不是文件名的URL時,使用哪個文件。

(12)   error-page:error-page元素使得在返回特定HTTP狀態代碼時,或者特定類型的異常被拋出時,能夠制定將要顯示的頁面。

(13)   taglib:taglib元素對標記庫描述符文件(Tag Libraryu Descriptor file)指定別名。此功能使你能夠更改TLD文件的位置,而不用編輯使用這些文件的JSP頁面。

(14)   resource-env-ref:resource-env-ref元素聲明與資源相關的一個管理對象。

(15)   resource-ref:resource-ref元素聲明一個資源工廠使用的外部資源。

(16)   security-constraint:security-constraint元素制定應該保護的URL。它與login-config元素聯合使用。

(17)   login-config:用login-config元素來指定服務器應該怎樣給試圖訪問受保護頁面的用戶授權。它與sercurity-constraint元素聯合使用。

(18)   security-role:security-role元素給出安全角色的一個列表,這些角色將出現在servlet元素內的security-role-ref元素的role-name子元素中。分別地聲明角色可使高級IDE處理安全信息更爲容易。

(19)   env-entry:env-entry元素聲明Web應用的環境項。

(20)   ejb-ref:ejb-ref元素聲明一個EJB的主目錄的引用。

(21)   ejb-local-ref:ejb-local-ref元素聲明一個EJB的本地主目錄的應用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章