" />

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

JavaWeb中web.xml初始化加載順序詳解

 更新時間:2017年05月11日 09:08:37   作者:柒  
本篇文章主要介紹了JavaWeb中web.xml初始化加載順序詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

需求說明

做項目時,為了省事,起初把初始化的配置都放在每個類中 static加載,初始化配置一多,就想把它給整理一下,這里使用servlet中的init方法初始化。

web.xml說明

首先了解下web.xml中元素的加載順序:

  1. 啟動web項目后,web容器首先回去找web.xml文件,讀取這個文件
  2. 容器會創(chuàng)建一個 ServletContext ( servlet 上下文),整個 web 項目的所有部分都將共享這個上下文
  3. 容器將 轉換為鍵值對,并交給 servletContext
  4. 容器加載filter,創(chuàng)建過濾器, 要注意對應的filter-mapping一定要放在filter的后面
  5. 容器加載servlet,加載順序按照 Load-on-startup 來執(zhí)行

完整加載順序:ServletContext -> context-param -> listener-> filter -> servlet

配置實現(xiàn)

InitServlet.java:

web.xml:(部分配置)

<!-- 初始基礎化數(shù)據(jù)-->
  <servlet>
    <servlet-name>InitServlet</servlet-name>
    <servlet-class>com.acts.web.common.servlet.InitServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>InitServlet</servlet-name>
    <url-pattern>/InitServlet</url-pattern>
  </servlet-mapping>

servlet介紹

什么是servlet

servlet是sun公司為開發(fā)動態(tài)web而提供的一門技術,用戶若想用發(fā)一個動態(tài)web資源(即開發(fā)一個Java程序向瀏覽器輸出數(shù)據(jù)),需要完成以下2個步驟:

  1. 編寫一個Java類,實現(xiàn)servlet接口。
  2. 把開發(fā)好的Java類部署到web服務器中。

按照一種約定俗成的稱呼習慣,通常我們也把實現(xiàn)了servlet接口的java程序,稱之為Servlet。

servlet的運行過程

  1. 瀏覽器發(fā)出請求,被web容器獲取到
  2. Web服務器首先檢查是否已經(jīng)裝載并創(chuàng)建了該Servlet的實例對象。如果是,則直接執(zhí)行第④步,否則,執(zhí)行第②步。
  3. 裝載并創(chuàng)建該Servlet的一個實例對象,調(diào)用Servlet實例對象的init()方法。
  4. 創(chuàng)建一個用于封裝HTTP請求消息的HttpServletRequest對象和一個代表HTTP響應消息的HttpServletResponse對象,然后調(diào)用Servlet的service()方法并將請求和響應對象作為參數(shù)傳遞進去。
  5. WEB應用程序被停止或重新啟動之前,Servlet引擎將卸載Servlet,并在卸載之前調(diào)用Servlet的destroy()方法

servlet初始化

  1. load-on-startup >=0 時,表示在web應用啟動后立即加載,其中l(wèi)oad-on-startup的值越小,表示加載的優(yōu)先級越高,如果兩個servlet的load-on-startup值相同,則其加載優(yōu)先級有容器決定;
  2. load-on-startup 未配置時,則該servlet的加載由容器決定;

配置load-on-startup后,servlet在startup后立即加載,但只是調(diào)用servlet的init()方法,用以初始化該servlet相關的資源。初始化成功后,該servlet可響應web請求;如未配置load-on-startup,容器一般在第一次響應web請求時,會先檢測該servlet是否初始化,如未初始化,則調(diào)用servlet的init()先初始化,初始化成功后,再響應請求。

PS:一般我們在開發(fā)web應用時,都會配置這個參數(shù),有兩個好處:

  1. 如果初始化過程失敗,則容器會提示啟動失敗,此時我們能夠提前知道相關錯誤;
  2. 配置該參數(shù)相當于將初始化servlet的工作轉移到容器啟動過程,使得容器只要啟動成功后,就可立即響應web請求。

關于load-on-startup一些官網(wǎng)說明:

If the value is a negative integer, or the element is not present, the container is free to load the servlet  
whenever it chooses. If the value is a positive 
integer or 0, the container must load and initialize the servlet as the application is deployed.

注意

使用servlet時,一般都是繼承httpServlet,然后分別實現(xiàn)doGet或者doPost方法,但是在這里面要注意的是,這servlet并不是線程安全的,多線程單實例執(zhí)行的,當并發(fā)訪問同一個資源的話(成員變量等等),就有可能引發(fā)線程安全問題。

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

相關文章

  • maven工程中讀取resources中的資源文件

    maven工程中讀取resources中的資源文件

    Web項目中應該經(jīng)常有這樣的需求,在maven項目的resources目錄下放一些文件,比如一些配置文件,資源文件等,本文主要介紹了maven工程中讀取resources中的資源文件,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • 基于springboot設置Https請求過程解析

    基于springboot設置Https請求過程解析

    這篇文章主要介紹了基于springboot設置Https請求過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • IntelliJ?IDEA社區(qū)版2021.3配置SpringBoot項目詳細教程及失敗案例

    IntelliJ?IDEA社區(qū)版2021.3配置SpringBoot項目詳細教程及失敗案例

    IntelliJ?IDEA?2021.3.3是一款集成開發(fā)環(huán)境,用于Java和其他編程語言的開發(fā),下面這篇文章主要給大家介紹了關于IntelliJ?IDEA社區(qū)版2021.3配置SpringBoot項目詳細教程及失敗案例的相關資料,需要的朋友可以參考下
    2024-03-03
  • Java list與set中contains()方法效率案例詳解

    Java list與set中contains()方法效率案例詳解

    這篇文章主要介紹了Java list與set中contains()方法效率案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 如何使用Spring?Boot設置上傳文件大小限制

    如何使用Spring?Boot設置上傳文件大小限制

    上傳文件是互聯(lián)網(wǎng)中常應用的場景之一,最典型的情況就是上傳頭像等,下面這篇文章主要給大家介紹了關于如何使用Spring?Boot設置上傳文件大小限制的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-01-01
  • spring-boot報錯java: 程序包javax.servlet.http不存在

    spring-boot報錯java: 程序包javax.servlet.http不存在

    當springboot項目從2.7.x的升級到3.0.x的時候,會遇到一個問題java: 程序包javax.servlet.http不存在,下面就來具體介紹一下,感興趣的可以了解一下
    2024-08-08
  • 解決springboot application.properties server.port配置問題

    解決springboot application.properties server.port配置問題

    這篇文章主要介紹了解決springboot application.properties server.port配置問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Spring?boot?運用策略模式實現(xiàn)避免多次使用if的操作代碼

    Spring?boot?運用策略模式實現(xiàn)避免多次使用if的操作代碼

    這篇文章主要介紹了Spring?boot?運用策略模式實現(xiàn),避免多次使用if,使用策略模式后,新加一種支付策略時,只需要在策略枚舉中添加新加的策略信息,外加一個策略類即可,而不再需要添加新的if判斷,需要的朋友可以參考下
    2022-08-08
  • SpringCache輕松啟用Redis緩存的全過程

    SpringCache輕松啟用Redis緩存的全過程

    Spring Cache是Spring提供的一種緩存抽象機制,旨在通過簡化緩存操作來提高系統(tǒng)性能和響應速度,本文將給大家詳細介紹SpringCache如何輕松啟用Redis緩存,文中有詳細的代碼示例供大家參考,需要的朋友可以參考下
    2024-07-07
  • java 音頻轉換wav格式標準音頻的操作

    java 音頻轉換wav格式標準音頻的操作

    這篇文章主要介紹了java 音頻轉換wav格式標準音頻的操作,主要是使用ffmpeg命令進行轉換,該工具類主要是為了將各類音頻轉為wav標準格式,其中可以調(diào)節(jié)采樣率、聲道數(shù)等指標,依賴maven環(huán)境,需要的朋友可以參考下
    2021-10-10

最新評論

若尔盖县| 安徽省| 贵南县| 双鸭山市| 卓尼县| 玛多县| 确山县| 西乌| 星子县| 盘锦市| 榕江县| 沙河市| 莱州市| 广丰县| 永福县| 雅江县| 方城县| 民权县| 隆德县| 周宁县| 卢湾区| 柏乡县| 上饶市| 南华县| 凉城县| 仁寿县| 岢岚县| 崇信县| 安新县| 翁牛特旗| 沂水县| 贺兰县| 天峨县| 孝义市| 仙居县| 扬州市| 泾阳县| 三亚市| 汝阳县| 五大连池市| 望谟县|