国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解Java Web項目啟動執行順序

詳解Java Web項目啟動執行順序

2021-05-09 12:45蔡小白的博客 Java教程

這篇文章主要介紹了詳解Java Web項目啟動執行順序,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一、web.xml配置節點簡介

(1) context-param

格式定義

java" id="highlighter_955866">
?
1
2
3
4
<context-param>
  <param-name>contextconfiglocation</param-name>
  <param-value>classpath:spring/spring-mybatis.xml</param-value>
</context-param>

作用:

  1. 該元素用來聲明應用范圍(整個web項目)內的上下文初始化參數。
  2. param-name 設定上下文的參數名稱。必須是唯一名稱
  3. param-value 設定的參數名稱的值,這里的例子是指定spring配置文件的位置

(2) listener

格式定義

?
1
2
3
4
//listen-class 指定監聽類,該類繼承servletcontextlistener 包含初始化方法contextinitialized(servletcontextevent event) 和銷毀方法contextdestoryed(servletcontextevent event)
<listener>
    <listener-class>org.springframework.web.context.contextloaderlistener</listener-class>
</listener>

作用:該元素用來注冊一個監聽器類??梢允盏绞录裁磿r候發生以及用什么作為響應的通知。事件監聽程序在建立、修改和刪除會話或servlet環境時得到通知。常與context-param聯合使用。

(3) filter

格式定義

?
1
2
3
4
5
6
7
8
9
10
11
12
<filter>
  <filter-name>characterencodingfilter</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>characterencodingfilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

作用:用于指定web容器的過濾器, filter能夠在一個請求到達servlet之前預處理用戶請求,也可以在離開servlet時處理http響應;在執行servlet之前,首先執行filter程序,并為之做一些預處理工作;根據程序需要修改請求和響應;在servlet被調用之后截獲servlet的執行。

(4)servlet

- 格式定義

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//配置spring mvc,指定處理請求的servlet,有兩種方式:
//1. 默認查找mvc配置文件的地址是:/web-inf/${servletname}-servlet.xml
//2. 可以通過配置修改mvc配置文件的位置,需要在配置dispatcherservlet時指定mvc配置文件的位置。
//這里使用的是第二種方式
 
<!-- springmvc的核心控制器 -->
  <servlet>
    <servlet-name>dispatchservlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class>
    <init-param>
      <param-name>contextconfiglocation</param-name>
      <param-value>classpath:spring/springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatchservlet</servlet-name>
    <url-pattern>*.shtml</url-pattern>
  </servlet-mapping>

作用:

  1. 創建并返回一個包含基于客戶請求性質的動態內容的完整的html頁面;
  2. 創建可嵌入到現有的html頁面中的一部分html頁面(html片段);
  3. 讀取客戶端發來的隱藏數據;
  4. 讀取客戶端發來的顯示數據;
  5. 與其他服務器資源(包括數據庫和java的應用程序)進行通信;

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

  1. 啟動web項目,容器(如tomcat、apache)會去讀取它的配置文件web.xml 中的兩個節點,context-param和listener。
  2. 緊接著,容器將創建一個servletcontext(又稱為:servlet上下文),應用范圍內即整個web項目都能使用這個servlet上下文。
  3. 容器將< context-param >轉化為鍵值對,并交給servletcontext。
  4. 容器創建< listener >中的類實例,即創建監聽。(備注:listener定義的類可以是自定義的類但必須需要繼承servletcontextlistener)。
  5. 在監聽中會有contextinitialized(servletcontextevent args)初始化方法,在這個方法中獲得:servletcontext = servletcontextevent.getservletcontext(); context-param的值 = servletcontext.getinitparameter(“context-param的鍵”); 在這個類中還必須有一個contextdestroyed(servletcontextevent event) 銷毀方法。用于關閉應用前釋放資源,比如說數據庫連接的關閉。
  6. 得到這個context-param的值之后,你就可以做一些操作了。注意,這個時候你的web項目還沒有完全啟動完成。這個動作會比所有的servlet都要早。換句話說,這個時候,你對 < context-param > 中的鍵值做的操作,將在你的web項目完全啟動之前被執行。
  7. 舉例.你可能想在項目啟動之前就打開數據庫。那么這里就可以在< context-param >中設置數據庫的連接方式,在監聽類中初始化數據庫的連接。

補充知識:servletcontext,是一個全局的儲存信息的空間,服務器開始,其就存在,服務器關閉,其才釋放。request,一個用戶可有多個;session,一個用戶一個;而servletcontext,所有用戶共用一個。所以,為了節省空間,提高效率,servletcontext中,要放必須的、重要的、所有用戶需要共享的線程又是安全的一些信息。例如,一個購物網站,用戶要訪問商品的詳細信息,如果放在session域,每個用戶都要訪問一遍數據庫,這樣效率太低;而放在servletcontext中,服務器一啟動,就訪問數據庫將商品信息放入數據庫,這樣所有用戶只需要通過上下文就能訪問到商品的信息。

三、web.xml節點加載順序:

  • web.xml節點的加載順序與它們在web.xml中位置的先后無關,即不會因為< filter >寫在< context-param >前面就先加載< filter >。
  • 上文也提到到了,< context-param >用于對servletcontext提供鍵值對,即應用程序的上下文信息。而listener、servlet等節點在初始化的過程中會使用到這些上下文信息,所以最后我們得出web.xml節點的加載順序應該為:context-param->listener->filter->servlet。
  • 對于某類配置節點而言,位置的先后是有要求的。以servlet舉例,與servlet相關的配置節點是servlet-mapping,對于擁有相同配置節servlet-name的servlet和servlet-mapping來說,servlet-mapping必須在servlet后定義,否則當解析到servlet-mapping時,它的servlet-name還沒有定義。web 容器啟動時初始化每個 servlet時,是按照 servlet配置節出現的順序來初始化的。
  • 最終結論: web.xml 的加載順序是:[context-param -> listener -> filter -> servlet -> spring] ,而同類型節點之間的實際程序調用的時候的順序是根據對應的 mapping 的順序進行調用的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/qq_20805103/article/details/77851996

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲视频在线播放免费 | av软件在线| 日本伊人网 | 樱桃小丸子在线观看 | 久久精品国产欧美亚洲人人爽 | 精品久久久久久久人人人人传媒 | 久久精品日韩 | 欧美二区三区 | 久草网址 | 日本色综合 | 久久99精品国产麻豆婷婷洗澡 | 久久丁香 | 伊人久久综合精品一区二区三区 | 国产成人久久精品一区二区三区 | 在线永久免费观看黄网站 | 91在线综合 | 一级毛片免费看 | 99手机在线视频 | 色www精品视频在线观看 | 这里只有精品免费 | 国产一区二区在线免费观看 | 日韩精品日韩激情日韩综合 | 久久99精品久久久久久国产越南 | 久久国产一区二区 | 日韩a∨| 一级片在线观看网站 | 久久久精品影院 | 成人免费视频在线观看 | 国产精品久久久久一区二区三区 | 日本精品久久 | 国产精品成人久久久久 | 国产一区二区影院 | 四虎影视在线播放 | 国产宾馆自拍 | 成人理论片 | 日本一区二区在线视频 | 成人在线免费观看 | 亚洲欧美另类在线 | 久久精品一区二区三区不卡牛牛 | 日本天天操 | 希岛爱理av一区二区三区 |