web.xml 的加載順序

web.xml 的加載順序是:


context-param -> listener -> filter -> servlet

web.xml文件詳解


Web.xml常用元素

<web-app>

  • <display-name></display-name>定義了WEB應(yīng)用的名字
  • <description></description> 聲明WEB應(yīng)用的描述信息
  • <context-param></context-param> context-param元素聲明應(yīng)用范圍內(nèi)的初始化參數(shù)粘姜。
  • <filter></filter> 過(guò)濾器元素將一個(gè)名字與一個(gè)實(shí)現(xiàn)* javax.servlet.Filter接口的類相關(guān)聯(lián)。
    <filter-mapping></filter-mapping> 一旦命名了一個(gè)過(guò)濾器,就要利用filter-mapping元素把它與一個(gè)或多個(gè)servlet或JSP頁(yè)面相關(guān)聯(lián)涮母。
  • <listener></listener>servlet API的版本2.3增加了對(duì)事件監(jiān)聽(tīng)程序的支持段审,事件監(jiān)聽(tīng)程序在建立抑钟、修改和刪除會(huì)話或servlet環(huán)境時(shí)得到通知。Listener元素指出事件監(jiān)聽(tīng)程序類尽棕。
  • <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可以訪問(wèn)初始化參數(shù)或更容易地處理相對(duì)URL回官。在更改缺省URL時(shí)曹宴,使用servlet-mapping元素。
  • <session-config></session-config> 如果某個(gè)會(huì)話在一定時(shí)間內(nèi)未被訪問(wèn)歉提,服務(wù)器可以拋棄它以節(jié)省內(nèi)存笛坦。可通過(guò)使用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è)文件。
  • <error-page></error-page> 在返回特定HTTP狀態(tài)代碼時(shí)柿扣,或者特定類型的異常被拋出時(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è)資源工廠使用的外部資源艰垂。
  • <security-constraint></security-constraint> 制定應(yīng)該保護(hù)的URL。它與login-config元素聯(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)吨岭。
  • <ejb-ref></ejb-ref>聲明一個(gè)EJB的主目錄的引用拉宗。
  • <ejb-local-ref></ejb-local-ref>聲明一個(gè)EJB的本地主目錄的應(yīng)用。
    </web-app>

相應(yīng)元素配置

  1. Web應(yīng)用圖標(biāo):指出IDE和GUI工具用來(lái)表示W(wǎng)eb應(yīng)用的大圖標(biāo)和小圖標(biāo)
<icon>    
<small-icon>/images/app_small.gif</small-icon>    
<large-icon>/images/app_large.gif</large-icon>    
</icon>    
  1. Web 應(yīng)用名稱:提供GUI工具可能會(huì)用來(lái)標(biāo)記這個(gè)特定的Web應(yīng)用的一個(gè)名稱
    <display-name>Tomcat Example</display-name>
  2. Web 應(yīng)用描述: 給出于此相關(guān)的說(shuō)明性文本
    <disciption>Tomcat Example servlets and JSP pages.</disciption>
  3. 上下文參數(shù):聲明應(yīng)用范圍內(nèi)的初始化參數(shù)辣辫。
<context-param>    
    <param-name>ContextParameter</para-name>    
    <param-value>test</param-value>    
    <description>It is a test parameter.</description>    
</context-param>    

在servlet里面可以通過(guò)getServletContext().getInitParameter("context/param")得到

  1. 過(guò)濾器配置:將一個(gè)名字與一個(gè)實(shí)現(xiàn)javaxs.servlet.Filter接口的類相關(guān)聯(lián)旦事。
<filter>    
        <filter-name>setCharacterEncoding</filter-name>    
        <filter-class>com.myTest.setCharacterEncodingFilter</filter-class>    
        <init-param>    
            <param-name>encoding</param-name>    
            <param-value>GB2312</param-value>    
        </init-param>    
</filter>    
<filter-mapping>    
        <filter-name>setCharacterEncoding</filter-name>    
        <url-pattern>/*</url-pattern>    
</filter-mapping>    
  1. 監(jiān)聽(tīng)器配置
<listener>    
      <listerner-class>listener.SessionListener</listener-class>    
</listener>    
  1. Servlet配置

    基本配置

   <servlet>    
      <servlet-name>snoop</servlet-name>    
      <servlet-class>SnoopServlet</servlet-class>    
   </servlet>    
   <servlet-mapping>    
      <servlet-name>snoop</servlet-name>    
      <url-pattern>/snoop</url-pattern>    
   </servlet-mapping>    

高級(jí)配置

   <servlet>    
      <servlet-name>snoop</servlet-name>    
      <servlet-class>SnoopServlet</servlet-class>    
      <init-param>    
         <param-name>foo</param-name>    
         <param-value>bar</param-value>    
      </init-param>    
      <run-as>    
         <description>Security role for anonymous access</description>    
         <role-name>tomcat</role-name>    
      </run-as>    
   </servlet>    
   <servlet-mapping>    
      <servlet-name>snoop</servlet-name>    
      <url-pattern>/snoop</url-pattern>    
   </servlet-mapping>    

元素說(shuō)明

     <servlet></servlet> 用來(lái)聲明一個(gè)servlet的數(shù)據(jù),主要有以下子元素:    
     <servlet-name></servlet-name> 指定servlet的名稱    
     <servlet-class></servlet-class> 指定servlet的類名稱    
     <jsp-file></jsp-file> 指定web站臺(tái)中的某個(gè)JSP網(wǎng)頁(yè)的完整路徑    
     <init-param></init-param> 用來(lái)定義參數(shù)急灭,可有多個(gè)init-param姐浮。在servlet類中通過(guò)getInitParamenter(String name)方法訪問(wèn)初始化參數(shù)    
     <load-on-startup></load-on-startup>指定當(dāng)Web應(yīng)用啟動(dòng)時(shí),裝載Servlet的次序葬馋。當(dāng)值為正數(shù)或零時(shí):Servlet容器先加載數(shù)值小的servlet卖鲤,再依次加載其他數(shù)值大的servlet.當(dāng)值為負(fù)或未定義:Servlet容器將在Web客戶首次訪問(wèn)這個(gè)servlet時(shí)加載它    
     <servlet-mapping></servlet-mapping> 用來(lái)定義servlet所對(duì)應(yīng)的URL,包含兩個(gè)子元素    
     <servlet-name></servlet-name> 指定servlet的名稱    
     <url-pattern></url-pattern> 指定servlet所對(duì)應(yīng)的URL    
  1. 會(huì)話超時(shí)配置(單位為分鐘)
   <session-config>    
      <session-timeout>120</session-timeout>    
   </session-config>    
  1. MIME類型配置
   <mime-mapping>    
      <extension>htm</extension>    
      <mime-type>text/html</mime-type>    
   </mime-mapping>    
  1. 指定歡迎文件頁(yè)配置
   <welcome-file-list>    
      <welcome-file>index.jsp</welcome-file>    
      <welcome-file>index.html</welcome-file>    
      <welcome-file>index.htm</welcome-file>    
   </welcome-file-list>    
  1. 配置錯(cuò)誤頁(yè)面

  2. 通過(guò)錯(cuò)誤碼來(lái)配置error-page

   <error-page>    
      <error-code>404</error-code>    
      <location>/NotFound.jsp</location>    
   </error-page>    

上面配置了當(dāng)系統(tǒng)發(fā)生404錯(cuò)誤時(shí)畴嘶,跳轉(zhuǎn)到錯(cuò)誤處理頁(yè)面NotFound.jsp蛋逾。

  1. 通過(guò)異常的類型配置error-page
   <error-page>    
       <exception-type>java.lang.NullException</exception-type>    
       <location>/error.jsp</location>    
   </error-page>    

上面配置了當(dāng)系統(tǒng)發(fā)生java.lang.NullException(即空指針異常)時(shí),跳轉(zhuǎn)到錯(cuò)誤處理頁(yè)面error.jsp

  1. TLD配置
   <taglib>    
       <taglib-uri>http://jakarta.apache.org/tomcat/debug-taglib</taglib-uri>    
       <taglib-location>/WEB-INF/jsp/debug-taglib.tld</taglib-location>    
   </taglib>    

如果MyEclipse一直在報(bào)錯(cuò),應(yīng)該把<taglib> 放到 <jsp-config>

   <jsp-config>    
      <taglib>    
          <taglib-uri>http://jakarta.apache.org/tomcat/debug-taglib</taglib-uri>    
          <taglib-location>/WEB-INF/pager-taglib.tld</taglib-location>    
      </taglib>    
   </jsp-config>    
  1. 資源管理對(duì)象配置
   <resource-env-ref>    
       <resource-env-ref-name>jms/StockQueue</resource-env-ref-name>    
   </resource-env-ref>    
  1. 資源工廠配置
   <resource-ref>    
       <res-ref-name>mail/Session</res-ref-name>    
       <res-type>javax.mail.Session</res-type>    
       <res-auth>Container</res-auth>    
   </resource-ref>    

配置數(shù)據(jù)庫(kù)連接池就可在此配置:

   <resource-ref>    
       <description>JNDI JDBC DataSource of shop</description>    
       <res-ref-name>jdbc/sample_db</res-ref-name>    
       <res-type>javax.sql.DataSource</res-type>    
       <res-auth>Container</res-auth>    
   </resource-ref>    
  1. 安全限制配置
   <security-constraint>    
      <display-name>Example Security Constraint</display-name>    
      <web-resource-collection>    
         <web-resource-name>Protected Area</web-resource-name>    
         <url-pattern>/jsp/security/protected/*</url-pattern>    
         <http-method>DELETE</http-method>    
         <http-method>GET</http-method>    
         <http-method>POST</http-method>    
         <http-method>PUT</http-method>    
      </web-resource-collection>    
      <auth-constraint>    
        <role-name>tomcat</role-name>    
        <role-name>role1</role-name>    
      </auth-constraint>    
   </security-constraint>    
  1. 登陸驗(yàn)證配置
   <login-config>    
     <auth-method>FORM</auth-method>    
     <realm-name>Example-Based Authentiation Area</realm-name>    
     <form-login-config>    
        <form-login-page>/jsp/security/protected/login.jsp</form-login-page>    
        <form-error-page>/jsp/security/protected/error.jsp</form-error-page>    
     </form-login-config>    
   </login-config>    
  1. 安全角色:security-role元素給出安全角色的一個(gè)列表窗悯,這些角色將出現(xiàn)在servlet元素內(nèi)的security-role-ref元素的role-name子元素中区匣。
    分別地聲明角色可使高級(jí)IDE處理安全信息更為容易。
<security-role>    
     <role-name>tomcat</role-name>    
</security-role>    
  1. Web環(huán)境參數(shù):env-entry元素聲明Web應(yīng)用的環(huán)境項(xiàng)
<env-entry>    
     <env-entry-name>minExemptions</env-entry-name>    
     <env-entry-value>1</env-entry-value>    
     <env-entry-type>java.lang.Integer</env-entry-type>    
</env-entry>    
  1. EJB 聲明
<ejb-ref>    
     <description>Example EJB reference</decription>    
     <ejb-ref-name>ejb/Account</ejb-ref-name>    
     <ejb-ref-type>Entity</ejb-ref-type>    
     <home>com.mycompany.mypackage.AccountHome</home>    
     <remote>com.mycompany.mypackage.Account</remote>    
</ejb-ref>    
  1. 本地EJB聲明
<ejb-local-ref>    
     <description>Example Loacal EJB reference</decription>    
     <ejb-ref-name>ejb/ProcessOrder</ejb-ref-name>    
     <ejb-ref-type>Session</ejb-ref-type>    
     <local-home>com.mycompany.mypackage.ProcessOrderHome</local-home>    
     <local>com.mycompany.mypackage.ProcessOrder</local>    
</ejb-local-ref>    
  1. 配置DWR
<servlet>    
      <servlet-name>dwr-invoker</servlet-name>    
      <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>    
</servlet>    
<servlet-mapping>    
      <servlet-name>dwr-invoker</servlet-name>    
      <url-pattern>/dwr/*</url-pattern>    
</servlet-mapping>    
  1. 配置Struts
    <display-name>Struts Blank Application</display-name>    
    <servlet>    
        <servlet-name>action</servlet-name>    
        <servlet-class>    
            org.apache.struts.action.ActionServlet    
        </servlet-class>    
        <init-param>    
            <param-name>detail</param-name>    
            <param-value>2</param-value>    
        </init-param>    
        <init-param>    
            <param-name>debug</param-name>    
            <param-value>2</param-value>    
        </init-param>    
        <init-param>    
            <param-name>config</param-name>    
            <param-value>/WEB-INF/struts-config.xml</param-value>    
        </init-param>    
        <init-param>    
            <param-name>application</param-name>    
            <param-value>ApplicationResources</param-value>    
        </init-param>    
        <load-on-startup>2</load-on-startup>    
    </servlet>    
    <servlet-mapping>    
        <servlet-name>action</servlet-name>    
        <url-pattern>*.do</url-pattern>    
    </servlet-mapping>    
    <welcome-file-list>    
        <welcome-file>index.jsp</welcome-file>    
    </welcome-file-list>    
    <!-- Struts Tag Library Descriptors -->    
    <taglib>    
        <taglib-uri>struts-bean</taglib-uri>    
        <taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location>    
    </taglib>    
    <taglib>    
        <taglib-uri>struts-html</taglib-uri>    
        <taglib-location>/WEB-INF/tld/struts-html.tld</taglib-location>    
    </taglib>    
    <taglib>    
    <taglib-uri>struts-nested</taglib-uri>    
    <taglib-location>/WEB-INF/tld/struts-nested.tld</taglib-location>    
    </taglib>    
    <taglib>    
        <taglib-uri>struts-logic</taglib-uri>    
        <taglib-location>/WEB-INF/tld/struts-logic.tld</taglib-location>    
    </taglib>    
    <taglib>    
        <taglib-uri>struts-tiles</taglib-uri>    
        <taglib-location>/WEB-INF/tld/struts-tiles.tld</taglib-location>    
    </taglib>    
  1. 配置Spring(基本上都是在Struts中配置的)
<!-- 指定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>    
<!-- 定義SPRING監(jiān)聽(tīng)器蒋院,加載spring -->    
<listener>    
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener>    
<listener>    
        <listener-class>
            org.springframework.web.context.request.RequestContextListener    
        </listener-class>
</listener>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末亏钩,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子欺旧,更是在濱河造成了極大的恐慌姑丑,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辞友,死亡現(xiàn)場(chǎng)離奇詭異栅哀,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)昌屉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人茵瀑,你說(shuō)我怎么就攤上這事间驮。” “怎么了马昨?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵竞帽,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我鸿捧,道長(zhǎng)屹篓,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任匙奴,我火速辦了婚禮堆巧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘泼菌。我一直安慰自己谍肤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布哗伯。 她就那樣靜靜地躺著荒揣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪焊刹。 梳的紋絲不亂的頭發(fā)上系任,一...
    開(kāi)封第一講書(shū)人閱讀 52,156評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音虐块,去河邊找鬼俩滥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛非凌,可吹牛的內(nèi)容都是我干的举农。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼敞嗡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼颁糟!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起喉悴,我...
    開(kāi)封第一講書(shū)人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤棱貌,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后箕肃,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體婚脱,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了障贸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片错森。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖篮洁,靈堂內(nèi)的尸體忽然破棺而出涩维,到底是詐尸還是另有隱情,我是刑警寧澤袁波,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布瓦阐,位于F島的核電站,受9級(jí)特大地震影響篷牌,放射性物質(zhì)發(fā)生泄漏睡蟋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一枷颊、第九天 我趴在偏房一處隱蔽的房頂上張望戳杀。 院中可真熱鬧,春花似錦偷卧、人聲如沸豺瘤。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)坐求。三九已至,卻和暖如春晌梨,著一層夾襖步出監(jiān)牢的瞬間桥嗤,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工仔蝌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留泛领,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓敛惊,卻偏偏與公主長(zhǎng)得像渊鞋,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瞧挤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 本章為部署描述符中Web容器支持詳細(xì)描述Java Servlet 規(guī)范3.0版本要求锡宋。部署描述符在應(yīng)用開(kāi)發(fā)者,應(yīng)用...
    Lucky_Micky閱讀 2,016評(píng)論 0 0
  • 本章聊一聊ServletContext 3.0規(guī)范中定義的注解以及在web應(yīng)用中使用的框架和庫(kù)的可插拔性的提升特恬。 ...
    Lucky_Micky閱讀 6,037評(píng)論 0 3
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,813評(píng)論 0 11
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法执俩,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法癌刽,繼承相關(guān)的語(yǔ)法役首,異常的語(yǔ)法尝丐,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,657評(píng)論 18 399
  • 又一個(gè)春天款款地來(lái)了,“好色”的天涯孤旅背包客回歸了衡奥,我又癡癡地到江南來(lái)踏春了爹袁。 同樣是小橋流水人家,背...
    天涯孤旅背包客閱讀 81評(píng)論 0 3