在配置項目元件的過程中, 了解Tomcat加載元件順序很有必要。 例如某些架構如Quartz的叢集功能需要資料庫的支援, 資料庫的加載肯定要在架構元件加載之前。
經過查閱和Debug發現, web.xm元件加載順序為:context-param -> listener -> filter -> servlet(同類則按編寫順序執行)。
web.xml常用元件解析:
<web-app>
<display-name></display-name>WEB應用的名字
<description></description> WEB應用的描述
<context-param></context-param> context-param元素聲明應用範圍内的初始化參數
<!– 指定spring配置檔案位置 –>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
<!–加載多個spring配置檔案 –>
/WEB-INF/applicationContext.xml, /WEB-INF/action-servlet.xml
</param-value>
</context-param>
<filter></filter> 過濾器将一個名字與一個實作javax.servlet.Filter接口的類相關聯
<filter-mapping></filter-mapping> 一旦命名了一個過濾器,就要利用filter-mapping元素把它與一個或多個servlet或JSP頁面相關聯
<listener></listener> 事件監聽程式在建立、修改和删除會話或servlet環境時得到通知。Listener元素指出事件監聽程式類。
如Log4j這個廣泛使用的監聽和
<!– 定義SPRING監聽器,加載spring –>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet></servlet> 在向servlet或JSP頁面制定初始化參數或定制URL時,必須首先命名servlet或JSP頁面。Servlet元素就是用來完成此項任務的。
<servlet-mapping></servlet-mapping> 伺服器一般為servlet提供一個預設的URL:http://host/webAppPrefix/servlet/ServletName。
但是,常常會更改這個URL,以便servlet可以通路初始化參數或更容易地處理相對URL。在更改預設URL時,使用servlet-mapping元素
<session-config></session-config> 如果某個會話在一定時間内未被通路,伺服器可以抛棄它以節省記憶體。 可通過使用HttpSession的setMaxInactiveInterval方法明确設定單個會話對象的逾時值,或者可利用session-config元素制定預設逾時值
<mime-mapping></mime-mapping>如果Web應用具有想到特殊的檔案,希望能保證給他們配置設定特定的MIME類型,則mime-mapping元素提供這種保證
<welcome-file-list></welcome-file-list> 訓示伺服器在收到引用一個目錄名而不是檔案名的URL時,使用哪個檔案(其實就是歡迎界面或者說入口界面一般為index.*)
<error-page></error-page> 在傳回特定HTTP狀态代碼時,或者特定類型的異常被抛出時,能夠制定将要顯示的頁面。
<taglib></taglib> 對标記庫描述符檔案(Tag Libraryu Descriptor file)指定别名。此功能使你能夠更改TLD檔案的位置, 而不用編輯使用這些檔案的JSP頁面。
<resource-env-ref></resource-env-ref>聲明與資源相關的一個管理對象。
<resource-ref></resource-ref> 聲明一個資源工廠使用的外部資源。
<security-constraint></security-constraint> 制定應該保護的URL。它與login-config元素聯合使用
<login-config></login-config> 指定伺服器應該怎樣給試圖通路受保護頁面的使用者授權。它與sercurity-constraint元素聯合使用。
<security-role></security-role>給出安全角色的一個清單,這些角色将出現在servlet元素内的security-role-ref元素的role-name子元素中。分别地聲明角色可使進階IDE處理安全資訊更為容易
<env-entry></env-entry>聲明Web應用的環境項
</web-app>