最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JAVA Web.xml加載順序過程詳解

 更新時間:2020年12月11日 11:49:23   作者:手撕高達的村長  
這篇文章主要介紹了JAVA Web.xml加載順序過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

web.xml加載過程(步驟):

1.啟動WEB項目的時候,容器(如:Tomcat)會去讀它的配置文件web.xml.讀兩個節(jié)點:

<listener></listener> 和 <context-param></context-param>

2.緊接著,容器創(chuàng)建一個ServletContext(上下文),這個WEB項目所有部分都將共享這個上下文.

3.容器將<context-param></context-param>轉(zhuǎn)化為鍵值對,并交給ServletContext.

4.容器創(chuàng)建<listener></listener>中的類實例,即創(chuàng)建監(jiān)聽.

5.在監(jiān)聽中會有contextInitialized(ServletContextEvent args)初始化方法,在這個方法中獲得:

ServletContext = ServletContextEvent.getServletContext();
context-param的值 = ServletContext.getInitParameter("context-param的鍵");

6.得到這個context-param的值之后,你就可以做一些操作了.注意,這個時候你的WEB項目還沒有完全啟動完成.這個動作會比 所 有的Servlet都要早.

換句話說,這個時候,你對<context-param>中的鍵值做的操作,將在你的WEB項目完全啟動之前被執(zhí)行.

7.舉例.你可能想在項目啟動之前就打開數(shù)據(jù)庫.
那么這里就可以在<context-param>中設(shè)置數(shù)據(jù)庫的連接方式,在監(jiān)聽類中初始化數(shù)據(jù)庫的連接.

8.這個監(jiān)聽是自己寫的一個類,除了初始化方法,它還有銷毀方法.用于關(guān)閉應(yīng)用前釋放資源.比如說數(shù)據(jù)庫連接的關(guān)閉.

web.xml節(jié)點加載順序:

可以肯定的是,節(jié)點的加載順序與它們在 web.xml 文件中的先后順序無關(guān)。即不會因為 filter 寫在 listener 的前面而會先加載 filter。最終得出的結(jié)論是:listener -> filter -> servlet

同時還存在著這樣一種配置節(jié)點:context-param,它用于向 ServletContext 提供鍵值對,即應(yīng)用程序上下文信息。我們的 listener, filter 等在初始化時會用到這些上下文中的信息,那么 context-param 配置節(jié)是不是應(yīng)該寫在 listener 配置節(jié)前呢?實際上 context-param 配置節(jié)可寫在任意位置,因此真正的加載順序為:

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

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

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

【加載Spring】

比如filter 需要用到 bean ,但加載順序是: 先加載filter 后加載spring,則filter中初始化操作中的bean為null;

所以,如果過濾器中要使用到 bean,可以將spring 的加載 改成 Listener的方式 :

<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>

最終結(jié)論:

web.xml 的加載順序是:[context-param -> listener -> filter -> servlet -> spring] ,而同類型節(jié)點之間的實際程序調(diào)用的時候的順序是根據(jù)對應(yīng)的 mapping 的順序進行調(diào)用的。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java經(jīng)典面試題匯總:網(wǎng)絡(luò)編程

    Java經(jīng)典面試題匯總:網(wǎng)絡(luò)編程

    本篇總結(jié)的是Java 網(wǎng)絡(luò)編程相關(guān)的面試題,后續(xù)會持續(xù)更新,希望我的分享可以幫助到正在備戰(zhàn)面試的實習(xí)生或者已經(jīng)工作的同行,如果發(fā)現(xiàn)錯誤還望大家多多包涵,不吝賜教,謝謝
    2021-07-07
  • Spring基于注解讀取外部配置文件

    Spring基于注解讀取外部配置文件

    這篇文章主要介紹了Spring基于注解讀取外部配置文件,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-12-12
  • Java21虛擬線程實踐

    Java21虛擬線程實踐

    java21正式版發(fā)布了,為我們帶來了很多新的特性,其中我最感興趣的就是虛擬線程,本文主要介紹了Java21虛擬線程實踐,感興趣的可以;了解一下
    2023-10-10
  • java編寫全年考勤日歷

    java編寫全年考勤日歷

    這篇文章主要為大家詳細介紹了java編寫全年考勤日歷,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • AsyncHttpClient的默認(rèn)配置源碼流程解讀

    AsyncHttpClient的默認(rèn)配置源碼流程解讀

    這篇文章主要為大家介紹了AsyncHttpClient的默認(rèn)配置源碼流程解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Java?Process中waitFor()的問題詳解

    Java?Process中waitFor()的問題詳解

    這篇文章主要給大家介紹了關(guān)于Java?Process中waitFor()問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-12-12
  • MybatisPlus多表查詢及分頁查詢完整代碼

    MybatisPlus多表查詢及分頁查詢完整代碼

    這篇文章主要介紹了MybatisPlus多表查詢及分頁查詢完整代碼,本文通過示例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • 使用Java獲取Json中的數(shù)據(jù)簡單示例

    使用Java獲取Json中的數(shù)據(jù)簡單示例

    開發(fā)過程中經(jīng)常會遇到j(luò)son數(shù)據(jù)的處理,而單獨對json數(shù)據(jù)進行增刪改并不方便,下面這篇文章主要給大家介紹了關(guān)于使用Java獲取Json中的數(shù)據(jù),文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • 基于Flyway實現(xiàn)簡化Spring Boot項目部署

    基于Flyway實現(xiàn)簡化Spring Boot項目部署

    這篇文章主要介紹了基于Flyway實現(xiàn)簡化Spring Boot項目部署,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • Spring容器刷新obtainFreshBeanFactory示例詳解

    Spring容器刷新obtainFreshBeanFactory示例詳解

    這篇文章主要為大家介紹了Spring容器刷新obtainFreshBeanFactory示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03

最新評論

鸡西市| 城固县| 榆中县| 碌曲县| 杭州市| 翼城县| 叶城县| 新津县| 河津市| 从化市| 汉阴县| 龙口市| 张家口市| 霍林郭勒市| 石门县| 分宜县| 绥阳县| 正宁县| 衡水市| 上栗县| 方城县| 明溪县| 苍山县| 揭阳市| 增城市| 汉川市| 阳春市| 衡山县| 沅江市| 涟源市| 珲春市| 建平县| 新晃| 中江县| 泗阳县| 大理市| 大名县| 石阡县| 乌海市| 巴南区| 岐山县|