轉(zhuǎn) http://blog.csdn.net/fenglibing/archive/2009/03/19/4005441.aspx
轉(zhuǎn)自http://elevenet.javaeye.com/blog/67862
這篇文章還是不錯(cuò)的,有些老,有些地址還是直接翻譯的。不是很準(zhǔn)確。
關(guān)鍵字: J2EE
1 定義頭和根元素
部署描述符文件就像所有XML文件一樣,必須以一個(gè)XML頭開始。這個(gè)頭聲明可以使用的XML版本并給出文件的字符編碼。
DOCYTPE聲明必須立即出現(xiàn)在此頭之后。這個(gè)聲明告訴服務(wù)器適用的servlet規(guī)范的版本(如2.2或2.3)并指定管理此文件其余部分內(nèi)容的語法的DTD(Document Type Definition,文檔類型定義)。
所有部署描述符文件的頂層(根)元素為web-app。請(qǐng)注意,XML元素不像HTML,他們是大小寫敏感的。因此,web-App和WEB-APP都是不合法的,web-app必須用小寫。
2 部署描述符文件內(nèi)的元素次序
XML 元素不僅是大小寫敏感的,而且它們還對(duì)出現(xiàn)在其他元素中的次序敏感。例如,XML頭必須是文件中的第一項(xiàng),DOCTYPE聲明必須是第二項(xiàng),而web- app元素必須是第三項(xiàng)。在web-app元素內(nèi),元素的次序也很重要。服務(wù)器不一定強(qiáng)制要求這種次序,但它們?cè)试S(實(shí)際上有些服務(wù)器就是這樣做的)完全 拒絕執(zhí)行含有次序不正確的元素的Web應(yīng)用。這表示使用非標(biāo)準(zhǔn)元素次序的web.xml文件是不可移植的。
下面的列表給出了所有可直接出現(xiàn)在web-app元素內(nèi)的合法元素所必需的次序。例如,此列表說明servlet元素必須出現(xiàn)在所有servlet-mapping元素之前。請(qǐng)注意,所有這些元素都是可選的。因此,可以省略掉某一元素,但不能把它放于不正確的位置。
l icon icon 元素指出IDE和GUI工具用來表示W(wǎng)eb應(yīng)用的一個(gè)和兩個(gè)圖像文件的位置。
l display-name display-name元素提供GUI工具可能會(huì)用來標(biāo)記這個(gè)特定的Web應(yīng)用的一個(gè)名稱。
l description description元素給出與此有關(guān)的說明性文本。
l context-param context-param元素聲明應(yīng)用范圍內(nèi)的初始化參數(shù)。
l filter 過濾器元素將一個(gè)名字與一個(gè)實(shí)現(xiàn)javax.servlet.Filter接口的類相關(guān)聯(lián)。
l filter-mapping 一旦命名了一個(gè)過濾器,就要利用filter-mapping元素把它與一個(gè)或多個(gè)servlet或JSP 頁面相關(guān)聯(lián)。
l listener servlet API的版本2.3增加了對(duì)事件監(jiān)聽程序的支持,事件監(jiān)聽程序在建立、修改和刪除會(huì)話或servlet環(huán)境時(shí)得到通知。Listener元素指出事件監(jiān)聽程序類。
l servlet 在向servlet或JSP頁面制定初始化參數(shù)或定制URL時(shí),必須首先命名servlet或JSP頁面。Servlet元素就是用來完成此項(xiàng)任務(wù)的。
l servlet-mapping 服務(wù)器一般為servlet提供一個(gè)缺省的URL:http://host/webAppPrefix/servlet/ServletName。但是,常常會(huì)更改這個(gè)URL,以便servlet可以訪問初始化參數(shù)或更容易地處理相對(duì)URL。在更改缺省URL時(shí),使用servlet-mapping元素。
l session-config 如果某個(gè)會(huì)話在一定時(shí)間內(nèi)未被訪問,服務(wù)器可以拋棄它以節(jié)省內(nèi)存。可通過使用HttpSession的setMaxInactiveInterval方法 明確設(shè)置單個(gè)會(huì)話對(duì)象的超時(shí)值,或者可利用session-config元素制定缺省超時(shí)值。
l mime-mapping 如果Web應(yīng)用具有想到特殊的文件,希望能保證給他們分配特定的MIME類型,則mime-mapping元素提供這種保證。
l welcom-file-list welcome-file-list元素指示服務(wù)器在收到引用一個(gè)目錄名而不是文件名的URL時(shí),使用哪個(gè)文件。
l error-page error-page元素使得在返回特定HTTP狀態(tài)代碼時(shí),或者特定類型的異常被拋出時(shí),能夠制定將要顯示的頁面。
l taglib taglib元素對(duì)標(biāo)記庫描述符文件(Tag Libraryu Descriptor file)指定別名。此功能使你能夠更改TLD文件的位置,而不用編輯使用這些文件的JSP頁面。
l resource-env-ref resource-env-ref元素聲明與資源相關(guān)的一個(gè)管理對(duì)象。
l resource-ref resource-ref元素聲明一個(gè)資源工廠使用的外部資源。
l security-constraint security-constraint元素制定應(yīng)該保護(hù)的URL。它與login-config元素聯(lián)合使用
l login-config 用login-config元素來指定服務(wù)器應(yīng)該怎樣給試圖訪問受保護(hù)頁面的用戶授權(quán)。它與sercurity-constraint元素聯(lián)合使用。
l security-role security-role元素給出安全角色的一個(gè)列表,這些角色將出現(xiàn)在servlet元素內(nèi)的security-role-ref元素的role- name子元素中。分別地聲明角色可使高級(jí)IDE處理安全信息更為容易。
l env-entry env-entry元素聲明Web應(yīng)用的環(huán)境項(xiàng)。
l ejb-ref ejb-ref元素聲明一個(gè)EJB的主目錄的引用。
l ejb-local-ref ejb-local-ref元素聲明一個(gè)EJB的本地主目錄的應(yīng)用。
3 分配名稱和定制的UL
在web.xml中完成的一個(gè)最常見的任務(wù)是對(duì)servlet或JSP頁面給出名稱和定制的URL。用servlet元素分配名稱,使用servlet-mapping元素將定制的URL與剛分配的名稱相關(guān)聯(lián)。
3.1 分配名稱
為 了提供初始化參數(shù),對(duì)servlet或JSP頁面定義一個(gè)定制URL或分配一個(gè)安全角色,必須首先給servlet或JSP頁面一個(gè)名稱。可通過 servlet元素分配一個(gè)名稱。最常見的格式包括servlet-name和servlet-class子元素(在web-app元素內(nèi)),如下所示:
這
表示位于WEB-INF/classes/moreservlets/TestServlet的servlet已經(jīng)得到了注冊(cè)名Test。給
servlet一個(gè)名稱具有兩個(gè)主要的含義。首先,初始化參數(shù)、定制的URL模式以及其他定制通過此注冊(cè)名而不是類名引用此servlet。其次,可在
URL而不是類名中使用此名稱。因此,利用剛才給出的定義,URL http://host/webAppPrefix/servlet/Test
可用于 http://host/webAppPrefix/servlet/moreservlets.TestServlet 的場所。
請(qǐng) 記住:XML元素不僅是大小寫敏感的,而且定義它們的次序也很重要。例如,web-app元素內(nèi)所有servlet元素必須位于所有servlet- mapping元素(下一小節(jié)介紹)之前,而且還要位于5.6節(jié)和5.11節(jié)討論的與過濾器或文檔相關(guān)的元素(如果有的話)之前。類似地,servlet 的servlet-name子元素也必須出現(xiàn)在servlet-class之前。5.2節(jié)"部署描述符文件內(nèi)的元素次序"將詳細(xì)介紹這種必需的次序。
例 如,程序清單5-1給出了一個(gè)名為TestServlet的簡單servlet,它駐留在moreservlets程序包中。因?yàn)榇藄ervlet是扎根 在一個(gè)名為deployDemo的目錄中的Web應(yīng)用的組成部分,所以TestServlet.class放在deployDemo/WEB- INF/classes/moreservlets中。程序清單5-2給出將放置在deployDemo/WEB-INF/內(nèi)的web.xml文件的一部 分。此web.xml文件使用servlet-name和servlet-class元素將名稱Test與TestServlet.class相關(guān)聯(lián)。圖 5-1和圖5-2分別顯示利用缺省URL和注冊(cè)名調(diào)用TestServlet時(shí)的結(jié)果。
程序清單5-1 TestServlet.java
程序清單5-2 web.xml(說明servlet名稱的摘錄)
部署描述符文件就像所有XML文件一樣,必須以一個(gè)XML頭開始。這個(gè)頭聲明可以使用的XML版本并給出文件的字符編碼。
DOCYTPE聲明必須立即出現(xiàn)在此頭之后。這個(gè)聲明告訴服務(wù)器適用的servlet規(guī)范的版本(如2.2或2.3)并指定管理此文件其余部分內(nèi)容的語法的DTD(Document Type Definition,文檔類型定義)。
所有部署描述符文件的頂層(根)元素為web-app。請(qǐng)注意,XML元素不像HTML,他們是大小寫敏感的。因此,web-App和WEB-APP都是不合法的,web-app必須用小寫。
2 部署描述符文件內(nèi)的元素次序
XML 元素不僅是大小寫敏感的,而且它們還對(duì)出現(xiàn)在其他元素中的次序敏感。例如,XML頭必須是文件中的第一項(xiàng),DOCTYPE聲明必須是第二項(xiàng),而web- app元素必須是第三項(xiàng)。在web-app元素內(nèi),元素的次序也很重要。服務(wù)器不一定強(qiáng)制要求這種次序,但它們?cè)试S(實(shí)際上有些服務(wù)器就是這樣做的)完全 拒絕執(zhí)行含有次序不正確的元素的Web應(yīng)用。這表示使用非標(biāo)準(zhǔn)元素次序的web.xml文件是不可移植的。
下面的列表給出了所有可直接出現(xiàn)在web-app元素內(nèi)的合法元素所必需的次序。例如,此列表說明servlet元素必須出現(xiàn)在所有servlet-mapping元素之前。請(qǐng)注意,所有這些元素都是可選的。因此,可以省略掉某一元素,但不能把它放于不正確的位置。
l icon icon 元素指出IDE和GUI工具用來表示W(wǎng)eb應(yīng)用的一個(gè)和兩個(gè)圖像文件的位置。
l display-name display-name元素提供GUI工具可能會(huì)用來標(biāo)記這個(gè)特定的Web應(yīng)用的一個(gè)名稱。
l description description元素給出與此有關(guān)的說明性文本。
l context-param context-param元素聲明應(yīng)用范圍內(nèi)的初始化參數(shù)。
l filter 過濾器元素將一個(gè)名字與一個(gè)實(shí)現(xiàn)javax.servlet.Filter接口的類相關(guān)聯(lián)。
l filter-mapping 一旦命名了一個(gè)過濾器,就要利用filter-mapping元素把它與一個(gè)或多個(gè)servlet或JSP 頁面相關(guān)聯(lián)。
l listener servlet API的版本2.3增加了對(duì)事件監(jiān)聽程序的支持,事件監(jiān)聽程序在建立、修改和刪除會(huì)話或servlet環(huán)境時(shí)得到通知。Listener元素指出事件監(jiān)聽程序類。
l servlet 在向servlet或JSP頁面制定初始化參數(shù)或定制URL時(shí),必須首先命名servlet或JSP頁面。Servlet元素就是用來完成此項(xiàng)任務(wù)的。
l servlet-mapping 服務(wù)器一般為servlet提供一個(gè)缺省的URL:http://host/webAppPrefix/servlet/ServletName。但是,常常會(huì)更改這個(gè)URL,以便servlet可以訪問初始化參數(shù)或更容易地處理相對(duì)URL。在更改缺省URL時(shí),使用servlet-mapping元素。
l session-config 如果某個(gè)會(huì)話在一定時(shí)間內(nèi)未被訪問,服務(wù)器可以拋棄它以節(jié)省內(nèi)存。可通過使用HttpSession的setMaxInactiveInterval方法 明確設(shè)置單個(gè)會(huì)話對(duì)象的超時(shí)值,或者可利用session-config元素制定缺省超時(shí)值。
l mime-mapping 如果Web應(yīng)用具有想到特殊的文件,希望能保證給他們分配特定的MIME類型,則mime-mapping元素提供這種保證。
l welcom-file-list welcome-file-list元素指示服務(wù)器在收到引用一個(gè)目錄名而不是文件名的URL時(shí),使用哪個(gè)文件。
l error-page error-page元素使得在返回特定HTTP狀態(tài)代碼時(shí),或者特定類型的異常被拋出時(shí),能夠制定將要顯示的頁面。
l taglib taglib元素對(duì)標(biāo)記庫描述符文件(Tag Libraryu Descriptor file)指定別名。此功能使你能夠更改TLD文件的位置,而不用編輯使用這些文件的JSP頁面。
l resource-env-ref resource-env-ref元素聲明與資源相關(guān)的一個(gè)管理對(duì)象。
l resource-ref resource-ref元素聲明一個(gè)資源工廠使用的外部資源。
l security-constraint security-constraint元素制定應(yīng)該保護(hù)的URL。它與login-config元素聯(lián)合使用
l login-config 用login-config元素來指定服務(wù)器應(yīng)該怎樣給試圖訪問受保護(hù)頁面的用戶授權(quán)。它與sercurity-constraint元素聯(lián)合使用。
l security-role security-role元素給出安全角色的一個(gè)列表,這些角色將出現(xiàn)在servlet元素內(nèi)的security-role-ref元素的role- name子元素中。分別地聲明角色可使高級(jí)IDE處理安全信息更為容易。
l env-entry env-entry元素聲明Web應(yīng)用的環(huán)境項(xiàng)。
l ejb-ref ejb-ref元素聲明一個(gè)EJB的主目錄的引用。
l ejb-local-ref ejb-local-ref元素聲明一個(gè)EJB的本地主目錄的應(yīng)用。
3 分配名稱和定制的UL
在web.xml中完成的一個(gè)最常見的任務(wù)是對(duì)servlet或JSP頁面給出名稱和定制的URL。用servlet元素分配名稱,使用servlet-mapping元素將定制的URL與剛分配的名稱相關(guān)聯(lián)。
3.1 分配名稱
為 了提供初始化參數(shù),對(duì)servlet或JSP頁面定義一個(gè)定制URL或分配一個(gè)安全角色,必須首先給servlet或JSP頁面一個(gè)名稱。可通過 servlet元素分配一個(gè)名稱。最常見的格式包括servlet-name和servlet-class子元素(在web-app元素內(nèi)),如下所示:
- <servlet>
- <servlet-name>Test</servlet-name>
- <servlet-class>moreservlets.TestServlet</servlet-class>
- </servlet>
請(qǐng) 記住:XML元素不僅是大小寫敏感的,而且定義它們的次序也很重要。例如,web-app元素內(nèi)所有servlet元素必須位于所有servlet- mapping元素(下一小節(jié)介紹)之前,而且還要位于5.6節(jié)和5.11節(jié)討論的與過濾器或文檔相關(guān)的元素(如果有的話)之前。類似地,servlet 的servlet-name子元素也必須出現(xiàn)在servlet-class之前。5.2節(jié)"部署描述符文件內(nèi)的元素次序"將詳細(xì)介紹這種必需的次序。
例 如,程序清單5-1給出了一個(gè)名為TestServlet的簡單servlet,它駐留在moreservlets程序包中。因?yàn)榇藄ervlet是扎根 在一個(gè)名為deployDemo的目錄中的Web應(yīng)用的組成部分,所以TestServlet.class放在deployDemo/WEB- INF/classes/moreservlets中。程序清單5-2給出將放置在deployDemo/WEB-INF/內(nèi)的web.xml文件的一部 分。此web.xml文件使用servlet-name和servlet-class元素將名稱Test與TestServlet.class相關(guān)聯(lián)。圖 5-1和圖5-2分別顯示利用缺省URL和注冊(cè)名調(diào)用TestServlet時(shí)的結(jié)果。
程序清單5-1 TestServlet.java
- package moreservlets;
- import java.io.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- /** Simple servlet used to illustrate servlet naming
- * and custom URLs.
- * <P>
- * Taken from More Servlets and JavaServer Pages
- * from Prentice Hall and Sun Microsystems Press,
- * http://www.moreservlets.com/.
- * © 2002 Marty Hall; may be freely used or adapted.
- */
- public class TestServlet extends HttpServlet {
- public void doGet(HttpServletRequest request,
- HttpServletResponse response)
- throws ServletException, IOException {
- response.setContentType("text/html");
- PrintWriter out = response.getWriter();
- String uri = request.getRequestURI();
- out.println(ServletUtilities.headWithTitle("Test Servlet") +
- "<BODY BGCOLOR=\"#FDF5E6\">\n" +
- "<H2>URI: " + uri + "</H2>\n" +
- "</BODY></HTML>");
- }
- }
程序清單5-2 web.xml(說明servlet名稱的摘錄)
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <!DOCTYPE web-app
- PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd">
- <web-app>
- <!-- … -->
- <servlet>
- <servlet-name>Test</servlet-name>
- <servlet-class>moreservlets.TestServlet</servlet-class>
- </servlet>
- <!-- … -->
- </web-app>