在配置項(xiàng)目組件的過程中,了解Tomcat家在組建順序很有必要。理由某些框架如Quartz的集群功能需要數(shù)據(jù)庫的支持,數(shù)據(jù)庫的加載肯定要在框架組件加載之前。
經(jīng)過查閱和調(diào)試發(fā)現(xiàn),web.xml組件加載順序依次為:context-param -> listener -> filter -> servlet (同類則按編寫順序執(zhí)行)。
web.xml常用組件解析
<display-name></display-name>
WEB應(yīng)用的名字
<description></description>
WEB應(yīng)用的描述
<context-param></context-param>
context-param元素聲明應(yīng)用范圍內(nèi)的初始化參數(shù)
<!-- 指定spring配置文件位置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
<!--加載多個(gè)spring配置文件 -->
/WEB-INF/applicationContext.xml, /WEB-INF/action-servlet.xml
</param-value>
</context-param>
<filter></filter>
過濾器將一個(gè)名字與一個(gè)實(shí)現(xiàn)javax.servlet.Filter接口的類相關(guān)聯(lián)
<filter-mapping></filter-mapping>
一旦命名了一個(gè)過濾器,就要利用filter-mapping元素把它
與一個(gè)或多個(gè)servlet或JSP頁面相關(guān)聯(lián)
<listener></listener>
事件監(jiān)聽程序在建立、修改和刪除會(huì)話或servlet環(huán)境時(shí)得到通知。
Listener元素指出事件監(jiān)聽程序類。
如Log4j這個(gè)廣泛使用的監(jiān)聽
<!-- 定義SPRING監(jiān)聽器,加載spring -->
<listener>
<listenerclass>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet></servlet>
在向servlet或JSP頁面制定初始化參數(shù)或定制URL時(shí),
必須首先命名servlet或JSP頁面。
Servlet元素就是用來完成此項(xiàng)任務(wù)的。
<servlet-mapping></servlet-mapping>
服務(wù)器一般為servlet提供一個(gè)缺省的URL:http://host/webAppPrefix/servlet/ServletName。
但是,常常會(huì)更改這個(gè)URL,
以便servlet可以訪問初始化參數(shù)或更容易地處理相對(duì)URL。
在更改缺省URL時(shí),使用servlet-mapping元素
<session-config></session-config>
如果某個(gè)會(huì)話在一定時(shí)間內(nèi)未被訪問,
服務(wù)器可以拋棄它以節(jié)省內(nèi)存。
可通過使用HttpSession的setMaxInactiveInterval方法明確設(shè)置單個(gè)會(huì)話對(duì)象的超時(shí)值,
或者可利用session-config元素制定缺省超時(shí)值
<mime-mapping></mime-mapping>
如果Web應(yīng)用具有想到特殊的文件,
希望能保證給他們分配特定的MIME類型,
則mime-mapping元素提供這種保證
<welcome-file-list></welcome-file-list>
指示服務(wù)器在收到引用一個(gè)目錄名而不是文件名的URL時(shí),
使用哪個(gè)文件(其實(shí)就是歡迎界面或者說入口界面一般為index.*)
<error-page></error-page>
在返回特定HTTP狀態(tài)代碼時(shí),或者特定類型的異常被拋出時(shí),
能夠制定將要顯示的頁面。
<taglib></taglib>
對(duì)標(biāo)記庫描述符文件(Tag Libraryu Descriptor file)指定別名。
此功能使你能夠更改TLD文件的位置,
而不用編輯使用這些文件的JSP頁面。
<resource-env-ref></resource-env-ref>
聲明與資源相關(guān)的一個(gè)管理對(duì)象。
<resource-ref></resource-ref>
聲明一個(gè)資源工廠使用的外部資源。
<security-constraint></security-constraint>
制定應(yīng)該保護(hù)的URL。它與login-config元素聯(lián)合使用
<login-config></login-config>
指定服務(wù)器應(yīng)該怎樣給試圖訪問受保護(hù)頁面的用戶授權(quán)。
它與sercurity-constraint元素聯(lián)合使用。
<security-role></security-role>
給出安全角色的一個(gè)列表,這些角色將出現(xiàn)在servlet元素內(nèi)的
security-role-ref元素的role-name子元素中。
分別地聲明角色可使高級(jí)IDE處理安全信息更為容易
<env-entry></env-entry>
聲明Web應(yīng)用的環(huán)境項(xiàng)
</web-app>