eclipse : java項目中的web.xml( Deployment Descriptor 部署描述檔案 )配置說明

來源:互聯網
上載者:User

標籤:inactive   資訊   逾時   att   snippet   base64   資源   idg   -keep   

context-param、listener、filter、servlet

 首先可以肯定的是,載入順序與它們在 web.xml 設定檔中的先後順序無關。即不會因為 filter 寫在 listener 的前面而會先載入 filter。最終得出的結論是: listener -> filter -> servlet

    同時還存在著這樣一種配置節:context-param,它用於向 ServletContext 提供索引值對,即應用程式內容相關的初始化參數。我們的 listener, filter 等在初始化時會用到這些上下文中的資訊,那麼 context-param 配置節是不是應該寫在 listener 配置節前呢?實際上 context-param 配置節可寫在任意位置。但是,真正的載入順序為:context-param -> listener -> filter -> servlet 

    對於某一類配置節點的多個配置項來說,則與它們出現的順序是有關的。以 filter 為例,web.xml 中當然可以定義多個 filter,與 filter 相關的一個配置節點是 filter-mapping,這裡一定要注意,對於擁有相同 filter-name 的 filter 和 filter-mapping 配置節而言,filter-mapping 必須出現在 filter 之後,否則當解析到 filter-mapping 時,它所對應的 filter-name 還未定義。web 容器啟動時初始化每個 filter 時,是按照 filter 配置節出現的順序來初始化的,當請求資源匹配多個 filter-mapping 時, filter 攔截資源是按照 filter-mapping 配置節出現的順序來依次調用 doFilter() 方法的。

    servlet 同 filter 類似 ,此處不再贅述。

   由此,可以看出,web.xml 的載入順序是: context-param -> listener -> filter -> servlet ,而同個類型之間的實際程式調用的時候的順序是根據對應的 mapping 的順序進行調用的

context-param
配置的是整個web應用的上下文初始化參數。
    <context>        <param-name></param-name>        <param-value></param-value>    </context>

如果想要獲得參數值,可以在servlet中調用: 
(1) getServletContext.getInitParameter(“”); 
(2) getServletConfig().getServletContext().getInitParameter(); 
在web應用部署完成以後,值沒法改變。

listener

<listener>

<listener-class></listener-class>

</listener>

web容器自己會根據listener-class中的類implements什麼類型的介面進行判斷。
filter
 <filter>     <filter-name></filer-name>     <filer-class></filer-class>     <init-param>         <param-name></param-name>         <param-value></param-value>     </init-param> </filter><filer-mapping>    <filer-name></filer-name>    <url-pattern></url-pattern></filer-mapping>
  • filer 有兩個配置節點:filer和filer-mapping,其中對應的filer-mapping必須在filer配置節點配置完成後才能進行配置。而filer-mapping的映射可以根據:url-pattern,類似於servlet-mapping。或者直接使用。
servlet
 <servlet>     <servlet-name></servlet-name>     <servlet-class></servlet-class>     <init-param>         <param-name></param-name>         <param-value></param-value>     </init-param>     <init-param>         <param-name></param-name>         <param-value></param-value>     </init-param>     <load-on-startup></load-on-startup> </servlet><servlet-mapping>    <servlet-name></servlet-name>    <url-pattern></url-pattern></servlet-mapping>
  •  init-param:配置的key/value會被設定到該servlet對應的servletConfig對象。注意:不同於ServletContxt,每個servlet 

都會有自己的servletConfig。部署完成後,參數值不能變。 
??load-on-startup:用來確定servlet的載入時間。如果未設定或者為負數,則在該servlet對應的第一個使用者請求到來時,才載入servlet類,並調用init()。如果為正數或者0,則在web應用部署後就載入servlet。其數位大小又標識了載入的順序,值越小越早被載入,如果值相等,就先在web.xml聲明的先載入。

session-config (會話逾時設定,單位分鐘)
 <session-config>     <session-timeout></session-timeout> </session-config>
  • 如果某個會話在一定時間內未被訪問,伺服器可以拋棄它以節省記憶體。 可通過使用HttpSession的setMaxInactiveInterval方法明確設定單個會話對象的逾時值(此時單位是秒),或者可利用session-config元素制定預設逾時值(此時單位是分支)。

eclipse : java項目中的web.xml( Deployment Descriptor 部署描述檔案 )配置說明

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.