在配置項(xiàng)目組件的過(guò)程中蔗蹋,了解Tomcat家在組建順序很有必要冰寻。理由某些框架如Quartz的集群功能需要數(shù)據(jù)庫(kù)的支持,數(shù)據(jù)庫(kù)的加載肯定要在框架組件加載之前崖疤。
經(jīng)過(guò)查閱和調(diào)試發(fā)現(xiàn),web.xml組件加載順序依次為:context-param -> listener -> filter -> servlet (同類(lèi)則按編寫(xiě)順序執(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>
過(guò)濾器將一個(gè)名字與一個(gè)實(shí)現(xiàn)javax.servlet.Filter接口的類(lèi)相關(guān)聯(lián)
<filter-mapping></filter-mapping>
一旦命名了一個(gè)過(guò)濾器劫哼,就要利用filter-mapping元素把它
與一個(gè)或多個(gè)servlet或JSP頁(yè)面相關(guān)聯(lián)
<listener></listener>
事件監(jiān)聽(tīng)程序在建立、修改和刪除會(huì)話(huà)或servlet環(huán)境時(shí)得到通知割笙。
Listener元素指出事件監(jiān)聽(tīng)程序類(lèi)权烧。
如Log4j這個(gè)廣泛使用的監(jiān)聽(tīng)
<!-- 定義SPRING監(jiān)聽(tīng)器,加載spring -->
<listener>
<listenerclass>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet></servlet>
在向servlet或JSP頁(yè)面制定初始化參數(shù)或定制URL時(shí)伤溉,
必須首先命名servlet或JSP頁(yè)面般码。
Servlet元素就是用來(lái)完成此項(xiàng)任務(wù)的。
<servlet-mapping></servlet-mapping>
服務(wù)器一般為servlet提供一個(gè)缺省的URL:http://host/webAppPrefix/servlet/ServletName乱顾。
但是板祝,常常會(huì)更改這個(gè)URL,
以便servlet可以訪(fǎng)問(wèn)初始化參數(shù)或更容易地處理相對(duì)URL糯耍。
在更改缺省URL時(shí)扔字,使用servlet-mapping元素
<session-config></session-config>
如果某個(gè)會(huì)話(huà)在一定時(shí)間內(nèi)未被訪(fǎng)問(wèn)囊嘉,
服務(wù)器可以?huà)仐壦怨?jié)省內(nèi)存温技。
可通過(guò)使用HttpSession的setMaxInactiveInterval方法明確設(shè)置單個(gè)會(huì)話(huà)對(duì)象的超時(shí)值,
或者可利用session-config元素制定缺省超時(shí)值
<mime-mapping></mime-mapping>
如果Web應(yīng)用具有想到特殊的文件扭粱,
希望能保證給他們分配特定的MIME類(lèi)型舵鳞,
則mime-mapping元素提供這種保證
<welcome-file-list></welcome-file-list>
指示服務(wù)器在收到引用一個(gè)目錄名而不是文件名的URL時(shí),
使用哪個(gè)文件(其實(shí)就是歡迎界面或者說(shuō)入口界面一般為index.*)
<error-page></error-page>
在返回特定HTTP狀態(tài)代碼時(shí)琢蛤,或者特定類(lèi)型的異常被拋出時(shí)蜓堕,
能夠制定將要顯示的頁(yè)面抛虏。
<taglib></taglib>
對(duì)標(biāo)記庫(kù)描述符文件(Tag Libraryu Descriptor file)指定別名。
此功能使你能夠更改TLD文件的位置套才,
而不用編輯使用這些文件的JSP頁(yè)面迂猴。
<resource-env-ref></resource-env-ref>
聲明與資源相關(guān)的一個(gè)管理對(duì)象。
<resource-ref></resource-ref>
聲明一個(gè)資源工廠(chǎng)使用的外部資源背伴。
<security-constraint></security-constraint>
制定應(yīng)該保護(hù)的URL沸毁。它與login-config元素聯(lián)合使用
<login-config></login-config>
指定服務(wù)器應(yīng)該怎樣給試圖訪(fǎng)問(wèn)受保護(hù)頁(yè)面的用戶(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>