web.xml 組件加載順序

  在配置項目組件的過程當中, 瞭解Tomcat加載組件順序頗有必要。 例如某些框架如Quartz的集羣功能須要數據庫的支持, 數據庫的加載確定要在框架組件加載以前。css

 

  通過查閱和Debug發現, web.xml組件加載順序爲:context-param -> listener -> filter -> servlet(同類則按編寫順序執行)。html

 

web.xml經常使用組件解析:前端

<web-app>
   
<display-name></display-name>
WEB應用的名字 
  
<description></description> 
WEB應用的描述    

<context-param></context-param> 
context-param元素聲明應用範圍內的初始化參數

 <!-- 指定spring配置文件位置 -->    
<context-param>    
  <param-name>contextConfigLocation</param-name>    
  <param-value>    
<!--加載多個spring配置文件 -->    
/WEB-INF/applicationContext.xml, /WEB-INF/action-servlet.xml    
  </param-value>    
</context-param>    


<filter></filter> 
過濾器將一個名字與一個實現javax.servlet.Filter接口的類相關聯    

<filter-mapping></filter-mapping> 
一旦命名了一個過濾器,就要利用filter-mapping元素把它
與一個或多個servlet或JSP頁面相關聯

   
<listener></listener> 
事件監聽程序在創建、修改和刪除會話或servlet環境時獲得通知。
Listener元素指出事件監聽程序類。    

如Log4j這個普遍使用的監聽

<!-- 定義SPRING監聽器,加載spring -->   
<listener>    
  <listenerclass>
    org.springframework.web.context.ContextLoaderListener
  </listener-class>    
</listener>  


<servlet></servlet> 
在向servlet或JSP頁面制定初始化參數或定製URL時,
必須首先命名servlet或JSP頁面。
Servlet元素就是用來完成此項任務的。
   
<servlet-mapping></servlet-mapping> 
服務器通常爲servlet提供一個缺省的URL:http://host/webAppPrefix/servlet/ServletName。
可是,經常會更改這個URL,
以便servlet能夠訪問初始化參數或更容易地處理相對URL。
在更改缺省URL時,使用servlet-mapping元素    

<session-config></session-config> 
若是某個會話在必定時間內未被訪問,
服務器能夠拋棄它以節省內存。  
可經過使用HttpSession的setMaxInactiveInterval方法明確設置單個會話對象的超時值,
或者可利用session-config元素制定缺省超時值    

<mime-mapping></mime-mapping>
若是Web應用具備想到特殊的文件,
但願能保證給他們分配特定的MIME類型,
則mime-mapping元素提供這種保證  

 
<welcome-file-list></welcome-file-list> 
指示服務器在收到引用一個目錄名而不是文件名的URL時,
使用哪一個文件(其實就是歡迎界面或者說入口界面通常爲index.*)   


<error-page></error-page>
在返回特定HTTP狀態代碼時,或者特定類型的異常被拋出時,
可以制定將要顯示的頁面。    


<taglib></taglib> 
對標記庫描述符文件(Tag Libraryu Descriptor file)指定別名。
此功能使你可以更改TLD文件的位置,   
而不用編輯使用這些文件的JSP頁面。

   
<resource-env-ref></resource-env-ref>
聲明與資源相關的一個管理對象。 

  
<resource-ref></resource-ref> 
聲明一個資源工廠使用的外部資源。    


<security-constraint></security-constraint> 
制定應該保護的URL。它與login-config元素聯合使用 

  
<login-config></login-config> 
指定服務器應該怎樣給試圖訪問受保護頁面的用戶受權。
它與sercurity-constraint元素聯合使用。    


<security-role></security-role>
給出安全角色的一個列表,這些角色將出如今servlet元素內的
security-role-ref元素的role-name子元素中。
分別地聲明角色可以使高級IDE處理安全信息更爲容易


<env-entry></env-entry>
聲明Web應用的環境項


</web-app>

 

 

 

 

例如個人一個配置:java

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         id="WebApp_ID" version="2.5">
  <display-name>jwxt</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>


  <!--Spring配置-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext-*.xml</param-value>
  </context-param>

  <!-- Spring監聽器 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>



  <!-- 處理POST提交亂碼問題 -->
  <filter>
    <filter-name>encoding</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>

  <filter-mapping>
    <filter-name>encoding</filter-name>
    <url-pattern>*.action</url-pattern>
  </filter-mapping>


  <!--MVC 前端控制器 -->
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 默認找 /WEB-INF/[servlet的名稱]-servlet.xml -->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:SpringMVC.xml</param-value>
    </init-param>
  </servlet>

  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <!-- 1. /* 攔截全部 jsp js png .css 真的全攔截 建議不使用 2. *.action *.do 攔截以do action
        結尾的請求 確定能使用 ERP 3. / 攔截全部 (不包括jsp) (包含.js .png.css) 強烈建議使用 前臺 面向消費者 www.jd.com/search
        /對靜態資源放行 -->
    <url-pattern>*.action</url-pattern>
  </servlet-mapping>

<!--配置多個請求的方式-->
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>



  <!-- shiro過濾器定義 -->
<filter>
    <filter-name>shiroFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <init-param>
      <param-name>targetFilterLifecycle</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>shiroFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>


  <!-- 404頁面 -->
  <error-page>
    <error-code>404</error-code>
    <location>/404.jsp</location>
  </error-page>
  <!-- 500頁面 -->
  <error-page>
    <error-code>500</error-code>
    <location>/500.html</location>
  </error-page>


</web-app>

 

補充:web

context-param中的param-value能夠用通配符,例如:classpath:application*.xmlspring

                也能夠用多個逗號分割多個值,如classpath:appli1.xml,classpath:app2.xml數據庫

相關文章
相關標籤/搜索