在配置項目組件的過程當中, 瞭解Tomcat加載組件順序頗有必要。 例如某些框架如Quartz的集羣功能須要數據庫的支持, 數據庫的加載確定要在框架組件加載以前。java
通過查閱和Debug發現, web.xm組件加載順序爲:context-param -> listener -> filter -> servlet(同類則按編寫順序執行)。web
web.xml經常使用組件解析:
<web-app>spring
<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接口的類相關聯session
<filter-mapping></filter-mapping> 一旦命名了一個過濾器,就要利用filter-mapping元素把它與一個或多個servlet或JSP頁面相關聯
<listener></listener> 事件監聽程序在創建、修改和刪除會話或servlet環境時獲得通知。Listener元素指出事件監聽程序類。app
如Log4j這個普遍使用的監聽和框架
<!– 定義SPRING監聽器,加載spring –>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>xml
<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>