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元素聲明應用範圍內的初始化參數。context_param詳解
l filter 過濾器元素將一個名字與一個實現javax.servlet.Filter接口的類相關聯。filter詳解
l filter-mapping 一旦命名了一個過濾器,就要利用filter-mapping元素把它與一個或多個servlet或JSP頁面相關聯。
l listener servlet API的版本2.3增加了對事件監聽程序的支持,事件監聽程序在建立、修改和刪除會話或servlet環境時得到通知。Listener元素指出事件監聽程序類。listener詳解
l servlet 在向servlet或JSP頁面制定初始化參數或定製URL時,必須首先命名servlet或JSP頁面。Servlet元素就是用來完成此項任務的。
l servlet-mapping 服務器一般爲servlet提供一個缺省的URL:http://host/webAppPrefix/servlet/ServletName。但是,常常會更改這個URL,以便servlet可以訪問初始化參數或更容易地處理相對URL。在更改缺省URL時,使用servlet-mapping元素。
l session-config 如果某個會話在一定時間內未被訪問,服務器可以拋棄它以節省內存。可通過使用HttpSession的setMaxInactiveInterval方法明確設置單個會話對象的超時值,或者可利用session-config元素制定缺省超時值。
l mime-mapping 如果Web應用具有想到特殊的文件,希望能保證給他們分配特定的MIME類型,則mime-mapping元素提供這種保證。mime_mapping詳解
l welcom-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的本地主目錄的應用。


初始化過程:
1. 在啓動Web項目時,容器(比如Tomcat)會讀web.xml配置文件中的兩個節點<listener>和<context-param>。
2. 接着容器會創建一個ServletContext(上下文),應用範圍內即整個WEB項目都能使用這個上下文。
3. 接着容器會將讀取到<context-param>轉化爲鍵值對,並交給ServletContext。
4. 容器創建<listener></listener>中的類實例,即創建監聽(備註:listener定義的類可以是自定義的類但必須需要繼承ServletContextListener)。
5. 在監聽的類中會有一個contextInitialized(ServletContextEvent event)初始化方法,在這個方法中可以通過event.getServletContext().getInitParameter("contextConfigLocation") 來得到context-param 設定的值。在這個類中還必須有一個contextDestroyed(ServletContextEvent event) 銷燬方法.用於關閉應用前釋放資源,比如說數據庫連接的關閉。
6. 得到這個context-param的值之後,你就可以做一些操作了.注意,這個時候你的WEB項目還沒有完全啓動完成.這個動作會比所有的Servlet都要早。

由上面的初始化過程可知容器對於web.xml的加載過程是context-param >> listener  >> filter  >> servlet

當使用spring時,使用

mvcorg.springframework.web.servlet.DispatcherServletcontextConfigLocation/WEB-INF/classes/mvc-servlet.xmlmvc/
在mvc_servlet.xml中配置url到Servlet的映射(註解的方式),參考3.7。

發佈了30 篇原創文章 · 獲贊 8 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章