web.xml載入過程(步驟):
1.啟動web專案的時候,容器(如:tomcat)會去讀它的配置檔案web.xml.讀兩個節點:
和 2.緊接著,容器建立乙個servletcontext(上下文),這個web專案所有部分都將共享這個上下文.
3.容器將轉化為鍵值對,並交給servletcontext.
4.容器建立中的類例項,即建立監聽.
5.在監聽中會有contextinitialized(servletcontextevent args)
初始化方法,在這個方法中獲得:
servletcontext = servletcontextevent.getservletcontext();
context-param的值 = servletcontext.getinitparameter("context-param的鍵");
6.得到這個context-param的值之後,你就可以做一些操作了.注意,這個時候你的web專案還沒有完全啟動完成.這個動作 會比所有的servlet都要早.
換句話說,這個時候,你對中的鍵值做的操作,將在你的web專案完全啟動之前被執行.
7.舉例.你可能想在專案啟動之前就開啟資料庫.
那麼這裡就可以在中設定資料庫的連線方式,在監聽類中
初始化資料庫的連線.
8.這個監聽是自己寫的乙個類,除了
初始化方法,它還有銷毀方法.用於關閉應用前釋放資源.比如說資料庫連線的關閉.
首先可以肯定的是,載入順序與它們在 web.xml 檔案中的先後順序無關。即不會因為 filter 寫在 listener 的前面而會先載入 filter。最終得出的結論是:listener -> filter -> servlet
同時還存在著這樣一種配置節:context-param,它用於向 servletcontext 提供鍵值對,即應用程式上下文資訊。我們的 listener, filter 等在初始化時會用到這些上下文中的資訊,那麼 context-param 配置節是不是應該寫在 listener 配置節前呢?實際上 context-param 配置節可寫在任意位置,因此真正的載入順序為:context-param -> listener -> filter -> servlet
servlet 同 filter 類似,此處不再贅述。
servlet與filter的載入順序詳解
情況1 servlet沒加情況 web.xml配置順序 first filter,second filter,third filter,first servlet,second servlet,third servlet html view plain copy 初始化tomcat時 this is...
dubbo中的Filter順序
最近發現dubbo的小 bug,順便整理了一下dubbo中的filter呼叫順序及如何確定的。服務提供方的過濾器被呼叫順序 echofilter classloaderfilter genericfilter contextfilter 這4個是在 中指定的 exceptionfilter time...
Servlet 中 Filter的執行順序
servletfilter 中 dofilter 方法將呼叫過濾鏈中的下乙個過濾方法,當下乙個方法完成後,控制權將重新回到呼叫改方法的上級過濾器中。類似於遞迴呼叫。另外,如果過濾器的dofilter 方法中 寫出了定製的響應後,方法無需連到其它過濾器就能返回。這就是過濾器阻止後續處理的方法。publ...