更新時間:2020-11-30 17:46:42 來源:動力節(jié)點 瀏覽2620次
web.xml是Tomcat工程中最重要的配置文件,當(dāng)啟動一個Web項目時,容器包括(JBoss、Tomcat等)首先會讀取項目web.xml配置文件里的配置,當(dāng)這一步驟沒有出錯并且完成之后,項目才能正常地被啟動起來。那么如此重要的Web.xml文件配置到底是怎樣的呢?本文就來為大家揭曉答案,Web.xml文件配置共分為14步,下面我們一起學(xué)習(xí)。
1、定義頭和根元素
部署描述符文件就像所有XML文件一樣,必須以一個XML頭開始。這個頭聲明可以使用的XML版本并給出文件的字符編碼。
所有部署描述符文件的頂層(根)元素為web-app。請注意,XML元素不像HTML,他們是大小寫敏感的。因此,web-App和WEB-APP都是不合法的,web-app必須用小寫。
2、 部署描述符文件內(nèi)的元素次序
XML 元素不僅是大小寫敏感的,而且它們還對出現(xiàn)在其他元素中的次序敏感。例如,XML頭必須是文件中的第一項,DOCTYPE聲明必須是第二項,而web- app元素必須是第三項。在web-app元素內(nèi),元素的次序也很重要。服務(wù)器不一定強(qiáng)制要求這種次序,但它們允許(實際上有些服務(wù)器就是這樣做的)完全拒絕執(zhí)行含有次序不正確的元素的Web應(yīng)用。這表示使用非標(biāo)準(zhǔn)元素次序的web.xml文件是不可移植的。
3 、分配名稱和定制的UL
在web.xml中完成的一個最常見的任務(wù)是對servlet或JSP頁面給出名稱和定制的URL。用servlet元素分配名稱,使用servlet-mapping元素將定制的URL與剛分配的名稱相關(guān)聯(lián)。
4 、禁止激活器servlet
對servlet或JSP頁面建立定制URL可以注冊從 init(servlet)或jspInit(JSP頁面)方法中讀取得初始化參數(shù)。但是初始化參數(shù)只在是利用定制URL模式或注冊名訪問servlet或JSP頁面時可以使用,用缺省URL http://host/webAppPrefix/servlet/ServletName 訪問時不能使用。因此,你可能想關(guān)閉缺省URL,這樣就不會有人意外地調(diào)用初始化servlet了。這個過程稱為禁止激活器servlet,因為多數(shù)服務(wù)器具有一個用缺省的servlet URL注冊的標(biāo)準(zhǔn)servlet,并激活缺省的URL應(yīng)用的實際servlet。
5 、初始化和預(yù)裝載servlet與JSP頁面
這里討論控制servlet和JSP頁面的啟動行為的方法。特別是,說明了怎樣分配初始化參數(shù)以及怎樣更改服務(wù)器生存期中裝載servlet和JSP頁面的時刻。
6、 聲明過濾器
servlet版本2.3引入了過濾器的概念。過濾器可截取和修改進(jìn)入一個servlet或JSP頁面的請求或從一個servlet或JSP頁面發(fā)出的相應(yīng)。在執(zhí)行一個servlet或JSP頁面之前,必須執(zhí)行第一個相關(guān)的過濾器的doFilter方法。在該過濾器對其FilterChain對象調(diào)用doFilter時,執(zhí)行鏈中的下一個過濾器。如果沒有其他過濾器,servlet或JSP頁面被執(zhí)行。
7 、指定歡迎頁
假如用戶提供了一個像http: //host/webAppPrefix/directoryName/ 這樣的包含一個目錄名但沒有包含文件名的URL,很難預(yù)測用戶能得到什么,一個目錄表?一個錯誤?還是標(biāo)準(zhǔn)文件的內(nèi)容?如果得到標(biāo)準(zhǔn)文件內(nèi)容,是 index.html、index.jsp、default.html、default.htm或別的什么東西呢?
Welcome-file-list元素及其輔助的welcome-file元素解決了這個模糊的問題。
8 、指定處理錯誤的頁面
人畢竟不是機(jī)器,總有犯錯的時候,用戶可能會提供不合規(guī)定的參數(shù),使用不正確的URL或者不能提供必需的表單字段值。這時候就需要指定處理錯誤的頁面。
9 、控制會話超時
如果某個會話在一定的時間內(nèi)未被訪問,服務(wù)器可把它扔掉以節(jié)約內(nèi)存。可利用HttpSession的setMaxInactiveInterval方法直接設(shè)置個別會話對象的超時值。如果不采用這種方法,則缺省的超時值由具體的服務(wù)器決定。但可利用session-config和session- timeout元素來給出一個適用于所有服務(wù)器的明確的超時值。
10 、定位TLD
JSP taglib元素具有一個必要的uri屬性,它給出一個TLD(Tag Library Descriptor)文件相對于Web應(yīng)用的根的位置。TLD文件的實際名稱在發(fā)布新的標(biāo)簽庫版本時可能會改變,但我們希望避免更改所有現(xiàn)有JSP頁面。此外,可能還希望使用保持taglib元素的簡練性的一個簡短的uri。這就是部署描述符文件的taglib元素派用場的所在了。
11、 Web應(yīng)用的文檔化
越來越多的開發(fā)環(huán)境開始提供servlet和JSP的直接支持。例子有Borland Jbuilder Enterprise Edition、Macromedia UltraDev、Allaire JRun Studio以及IBM VisuaAge for Java等。
12 、關(guān)聯(lián)文件與MIME類型
服務(wù)器一般都具有一種讓W(xué)eb站點管理員將文件擴(kuò)展名與媒體相關(guān)聯(lián)的方法。例如,將會自動給予名為mom.jpg的文件一個image/jpeg的MIME 類型。但是,假如你的Web應(yīng)用具有幾個不尋常的文件,你希望保證它們在發(fā)送到客戶機(jī)時分配為某種MIME類型。mime-mapping元素(具有 extension和mime-type子元素)可提供這種保證。
13、 指定應(yīng)用事件監(jiān)聽程序
應(yīng)用事件監(jiān)聽器程序是建立或修改servlet環(huán)境或會話對象時通知的類。它們是servlet規(guī)范的版本2.3中的新內(nèi)容。
14 、J2EE元素
J2EE元素中比較典型的就是用作J2EE環(huán)境組成部分的Web應(yīng)用的web.xml元素。
實際上,一個web中可以沒有web.xml文件,也就是說,web.xml文件并不是web工程必須的。但前提是,你的工程不會涉及到過濾器、監(jiān)聽器等許多重要的功能,因此,絕大多數(shù)的web工程都是包含有web.xml文件的,掌握Web.xml文件配置也是十分必要的。你也可以觀看本站的XML教程,下載更多的XML文件源碼加深你的理解。