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

一.web.xml概述html

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

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

(1)配置JSP。瀏覽器

(2)配置和管理Servlet。安全

(3)配置和管理Listener。服務器

(4)配置和管理Filter。session

(5)配置標籤庫。app

(6)配置JSP屬性。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的本地主目錄的應用。

相關文章
相關標籤/搜索