<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    心的方向

    新的征途......
    posts - 75,comments - 19,trackbacks - 0

     web.xml配置的詳細(xì)說(shuō)明1

    1 定義頭和根元素
    部署描述符文件就像所有XML文件一樣,必須以一個(gè)XML頭開(kāi)始。這個(gè)頭聲明可以使用的XML版本并給出文件的字符編碼。
    DOCYTPE聲明必須立即出現(xiàn)在此頭之后。這個(gè)聲明告訴服務(wù)器適用的servlet規(guī)范的版本(如2.2或2.3)并指定管理此文件其余部分內(nèi)容的語(yǔ)法的DTD(Document Type Definition,文檔類(lèi)型定義)。
    所有部署描述符文件的頂層(根)元素為web-app。請(qǐng)注意,XML元素不像HTML,他們是大小寫(xiě)敏感的。因此,web-App和WEB-APP都是不合法的,web-app必須用小寫(xiě)。
    2 部署描述符文件內(nèi)的元素次序
    XML 元素不僅是大小寫(xiě)敏感的,而且它們還對(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)的合法元素所必需的次序。例如,此列表說(shuō)明servlet元素必須出現(xiàn)在所有servlet-mapping元素之前。請(qǐng)注意,所有這些元素都是可選的。因此,可以省略掉某一元素,但不能把它放于不正確的位置。
    l icon icon元素指出IDE和GUI工具用來(lái)表示W(wǎng)eb應(yīng)用的一個(gè)和兩個(gè)圖像文件的位置。
    l display-name display-name元素提供GUI工具可能會(huì)用來(lái)標(biāo)記這個(gè)特定的Web應(yīng)用的一個(gè)名稱(chēng)。
    l description description元素給出與此有關(guān)的說(shuō)明性文本。
    l context-param context-param元素聲明應(yīng)用范圍內(nèi)的初始化參數(shù)。
    l filter 過(guò)濾器元素將一個(gè)名字與一個(gè)實(shí)現(xiàn)javax.servlet.Filter接口的類(lèi)相關(guān)聯(lián)。
    l filter-mapping 一旦命名了一個(gè)過(guò)濾器,就要利用filter-mapping元素把它與一個(gè)或多個(gè)servlet或JSP頁(yè)面相關(guān)聯(lián)。
    l listener servlet API的版本2.3增加了對(duì)事件監(jiān)聽(tīng)程序的支持,事件監(jiān)聽(tīng)程序在建立、修改和刪除會(huì)話或servlet環(huán)境時(shí)得到通知。Listener元素指出事件監(jiān)聽(tīng)程序類(lèi)。
    l servlet 在向servlet或JSP頁(yè)面制定初始化參數(shù)或定制URL時(shí),必須首先命名servlet或JSP頁(yè)面。Servlet元素就是用來(lái)完成此項(xiàng)任務(wù)的。
    l servlet-mapping 服務(wù)器一般為servlet提供一個(gè)缺省的URL:http://host/webAppPrefix/servlet/ServletName。但是,常常會(huì)更改這個(gè)URL,以便servlet可以訪問(wèn)初始化參數(shù)或更容易地處理相對(duì)URL。在更改缺省URL時(shí),使用servlet-mapping元素。
    l session-config 如果某個(gè)會(huì)話在一定時(shí)間內(nèi)未被訪問(wèn),服務(wù)器可以拋棄它以節(jié)省內(nèi)存。可通過(guò)使用HttpSession的setMaxInactiveInterval方法明確設(shè)置單個(gè)會(huì)話對(duì)象的超時(shí)值,或者可利用session-config元素制定缺省超時(shí)值。
    l mime-mapping 如果Web應(yīng)用具有想到特殊的文件,希望能保證給他們分配特定的MIME類(lèi)型,則mime-mapping元素提供這種保證。
    l welcom-file-list welcome-file-list元素指示服務(wù)器在收到引用一個(gè)目錄名而不是文件名的URL時(shí),使用哪個(gè)文件。
    l error-page error-page元素使得在返回特定HTTP狀態(tài)代碼時(shí),或者特定類(lèi)型的異常被拋出時(shí),能夠制定將要顯示的頁(yè)面。
    l taglib taglib元素對(duì)標(biāo)記庫(kù)描述符文件(Tag Libraryu Descriptor file)指定別名。此功能使你能夠更改TLD文件的位置,而不用編輯使用這些文件的JSP頁(yè)面。
    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元素來(lái)指定服務(wù)器應(yīng)該怎樣給試圖訪問(wèn)受保護(hù)頁(yè)面的用戶(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 分配名稱(chēng)和定制的UL
    在web.xml中完成的一個(gè)最常見(jiàn)的任務(wù)是對(duì)servlet或JSP頁(yè)面給出名稱(chēng)和定制的URL。用servlet元素分配名稱(chēng),使用servlet-mapping元素將定制的URL與剛分配的名稱(chēng)相關(guān)聯(lián)。
    3.1 分配名稱(chēng)
    為了提供初始化參數(shù),對(duì)servlet或JSP頁(yè)面定義一個(gè)定制URL或分配一個(gè)安全角色,必須首先給servlet或JSP頁(yè)面一個(gè)名稱(chēng)。可通過(guò) servlet元素分配一個(gè)名稱(chēng)。最常見(jiàn)的格式包括servlet-name和servlet-class子元素(在web-app元素內(nèi)),如下所示:
    <servlet>
    <servlet-name>Test</servlet-name>
    <servlet-class>moreservlets.TestServlet</servlet-class>
    </servlet>
    這表示位于WEB-INF/classes/moreservlets/TestServlet的servlet已經(jīng)得到了注冊(cè)名Test。給 servlet一個(gè)名稱(chēng)具有兩個(gè)主要的含義。首先,初始化參數(shù)、定制的URL模式以及其他定制通過(guò)此注冊(cè)名而不是類(lèi)名引用此servlet。其次,可在 URL而不是類(lèi)名中使用此名稱(chēng)。因此,利用剛才給出的定義,URL http://host/webAppPrefix/servlet/Test 可用于 http://host/webAppPrefix/servlet/moreservlets.TestServlet 的場(chǎng)所。
    請(qǐng)記住:XML元素不僅是大小寫(xiě)敏感的,而且定義它們的次序也很重要。例如,web-app元素內(nèi)所有servlet元素必須位于所有servlet- mapping元素(下一小節(jié)介紹)之前,而且還要位于5.6節(jié)和5.11節(jié)討論的與過(guò)濾器或文檔相關(guān)的元素(如果有的話)之前。類(lèi)似地,servlet 的servlet-name子元素也必須出現(xiàn)在servlet-class之前。5.2節(jié)"部署描述符文件內(nèi)的元素次序"將詳細(xì)介紹這種必需的次序。
    例如,程序清單5-1給出了一個(gè)名為T(mén)estServlet的簡(jiǎn)單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元素將名稱(chēng)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(說(shuō)明servlet名稱(chēng)的摘錄)
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "

    <web-app>
    <!-- … -->
    <servlet>
    <servlet-name>Test</servlet-name>
    <servlet-class>moreservlets.TestServlet</servlet-class>
    </servlet>
    <!-- … -->
    </web-app>

    3.2 定義定制的URL
    大多數(shù)服務(wù)器具有一個(gè)缺省的serlvet URL:
    http://host/webAppPrefix/servlet/packageName.ServletName。雖然在開(kāi)發(fā)中使用這個(gè)URL很方便,但是我們常常會(huì)希望另一個(gè)URL用于部署。例如,可能會(huì)需要一個(gè)出現(xiàn)在Web應(yīng)用頂層的URL(如,http: //host/webAppPrefix/Anyname),并且在此URL中沒(méi)有servlet項(xiàng)。位于頂層的URL簡(jiǎn)化了相對(duì)URL的使用。此外,對(duì)許多開(kāi)發(fā)人員來(lái)說(shuō),頂層URL看上去比更長(zhǎng)更麻煩的缺省URL更簡(jiǎn)短。
    事實(shí)上,有時(shí)需要使用定制的URL。比如,你可能想關(guān)閉缺省URL映射,以便更好地強(qiáng)制實(shí)施安全限制或防止用戶(hù)意外地訪問(wèn)無(wú)初始化參數(shù)的servlet。如果你禁止了缺省的URL,那么你怎樣訪問(wèn)servlet呢?這時(shí)只有使用定制的URL了。
    為了分配一個(gè)定制的URL,可使用servlet-mapping元素及其servlet-name和url-pattern子元素。Servlet- name元素提供了一個(gè)任意名稱(chēng),可利用此名稱(chēng)引用相應(yīng)的servlet;url-pattern描述了相對(duì)于Web應(yīng)用的根目錄的URL。url- pattern元素的值必須以斜杠(/)起始。
    下面給出一個(gè)簡(jiǎn)單的web.xml摘錄,它允許使用URL http://host/webAppPrefix/UrlTest而不是http://host/webAppPrefix/servlet/Test
    http: //host/webAppPrefix/servlet/moreservlets.TestServlet。請(qǐng)注意,仍然需要XML頭、 DOCTYPE聲明以及web-app封閉元素。此外,可回憶一下,XML元素出現(xiàn)地次序不是隨意的。特別是,需要把所有servlet元素放在所有 servlet-mapping元素之前。
    <servlet>
    <servlet-name>Test</servlet-name>
    <servlet-class>moreservlets.TestServlet</servlet-class>
    </servlet>
    <!-- ... -->
    <servlet-mapping>
    <servlet-name>Test</servlet-name>
    <url-pattern>/UrlTest</url-pattern>
    </servlet-mapping>
    URL模式還可以包含通配符。例如,下面的小程序指示服務(wù)器發(fā)送所有以Web應(yīng)用的URL前綴開(kāi)始,以..asp結(jié)束的請(qǐng)求到名為BashMS的servlet。
    <servlet>
    <servlet-name>BashMS</servlet-name>
    <servlet-class>msUtils.ASPTranslator</servlet-class>
    </servlet>
    <!-- ... -->
    <servlet-mapping>
    <servlet-name>BashMS</servlet-name>
    <url-pattern>/*.asp</url-pattern>
    </servlet-mapping>
    3.3 命名JSP頁(yè)面
    因?yàn)镴SP頁(yè)面要轉(zhuǎn)換成sevlet,自然希望就像命名servlet一樣命名JSP頁(yè)面。畢竟,JSP頁(yè)面可能會(huì)從初始化參數(shù)、安全設(shè)置或定制的URL中受益,正如普通的serlvet那樣。雖然JSP頁(yè)面的后臺(tái)實(shí)際上是servlet這句話是正確的,但存在一個(gè)關(guān)鍵的猜疑:即,你不知道JSP頁(yè)面的實(shí)際類(lèi)名(因?yàn)橄到y(tǒng)自己挑選這個(gè)名字)。因此,為了命名JSP頁(yè)面,可將jsp-file元素替換為servlet-calss元素,如下所示:
    <servlet>
    <servlet-name>Test</servlet-name>
    <jsp-file>/TestPage.jsp</jsp-file>
    </servlet>
    命名JSP頁(yè)面的原因與命名servlet的原因完全相同:即為了提供一個(gè)與定制設(shè)置(如,初始化參數(shù)和安全設(shè)置)一起使用的名稱(chēng),并且,以便能更改激活 JSP頁(yè)面的URL(比方說(shuō),以便多個(gè)URL通過(guò)相同頁(yè)面得以處理,或者從URL中去掉.jsp擴(kuò)展名)。但是,在設(shè)置初始化參數(shù)時(shí),應(yīng)該注意,JSP頁(yè)面是利用jspInit方法,而不是init方法讀取初始化參數(shù)的。
    例如,程序清單5-3給出一個(gè)名為T(mén)estPage.jsp的簡(jiǎn)單JSP頁(yè)面,它的工作只是打印出用來(lái)激活它的URL的本地部分。TestPage.jsp放置在deployDemo應(yīng)用的頂層。程序清單5-4給出了用來(lái)分配一個(gè)注冊(cè)名PageName,然后將此注冊(cè)名與http://host/webAppPrefix/UrlTest2/anything 形式的URL相關(guān)聯(lián)的web.xml文件(即,deployDemo/WEB-INF/web.xml)的一部分。

    程序清單5-3 TestPage.jsp
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE>
    JSP Test Page
    </TITLE>
    </HEAD>
    <BODY BGCOLOR="#FDF5E6">
    <H2>URI: <%= request.getRequestURI() %></H2>
    </BODY>
    </HTML>

    程序清單5-4 web.xml(說(shuō)明JSP頁(yè)命名的摘錄)
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "

    <web-app>
    <!-- ... -->
    <servlet>
    <servlet-name>PageName</servlet-name>
    <jsp-file>/TestPage.jsp</jsp-file>
    </servlet>
    <!-- ... -->
    <servlet-mapping>
    <servlet-name> PageName </servlet-name>
    <url-pattern>/UrlTest2/*</url-pattern>
    </servlet-mapping>
    <!-- ... -->
    </web-app>

    轉(zhuǎn)自:http://lizzyostrich.blog.sohu.com/83686972.html
    主站蜘蛛池模板: 57pao国产成永久免费视频| 亚洲中文字幕乱码AV波多JI| 久久精品国产亚洲AV不卡| 在线观看永久免费视频网站| 成年女人毛片免费播放人| 成人毛片免费播放| 日韩在线a视频免费播放| 国产一区二区三区无码免费| 免费永久国产在线视频| 亚洲 无码 在线 专区| 亚洲人成人无码网www国产| 久久精品夜色噜噜亚洲A∨| 在线观看亚洲天天一三视| 亚洲人成人77777网站| 久久亚洲一区二区| 亚洲一区二区三区首页| 久久亚洲AV成人无码电影| 亚洲精品白色在线发布| 亚洲综合综合在线| 久久精品国产亚洲AV无码麻豆| 亚洲精品视频在线| 亚洲人成在线免费观看| 中文字幕乱码亚洲精品一区| 亚洲AV无码XXX麻豆艾秋| 免费人人潮人人爽一区二区| 好猛好深好爽好硬免费视频| 一区二区三区无码视频免费福利| 久久久久高潮毛片免费全部播放 | 亚洲人成伊人成综合网久久久| 亚洲日韩精品一区二区三区 | 九九精品免费视频| 国产精品免费看香蕉| 久久影视国产亚洲| 亚洲综合成人网在线观看| 国产成人亚洲综合一区| 真人无码作爱免费视频| 国产免费网站看v片在线| 国产精品久久永久免费| 又粗又硬免费毛片| 亚洲av无码专区在线播放| 亚洲精品福利你懂|