亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

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

2024-07-14 08:41:16
字體:
來源:轉載
供稿:網友

一、web.xml配置節點簡介

(1) context-param

格式定義

<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

格式定義

//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

格式定義

<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 

- 格式定義

//配置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 的順序進行調用的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久国产精品999| 国产亚洲精品久久久久动| 久久夜色精品国产欧美乱| 久久男人av资源网站| 日韩成人网免费视频| 日韩av网址在线| 亚洲黄色在线观看| 国产精品视频xxx| 亚洲性日韩精品一区二区| 日韩经典中文字幕| 日本精品一区二区三区在线播放视频| 国产精品久久久av| 欧美日韩性生活视频| 亚洲精品91美女久久久久久久| 国模精品系列视频| 麻豆一区二区在线观看| 久久久爽爽爽美女图片| 精品久久久久久久久中文字幕| 国产成人精品电影久久久| 亚洲成**性毛茸茸| 国产精品久久久999| 91精品国产亚洲| 国产精品电影在线观看| 国产精品国产福利国产秒拍| 夜夜躁日日躁狠狠久久88av| 久久99视频精品| 国内精品久久久久久久久| 2023亚洲男人天堂| 欧洲永久精品大片ww免费漫画| 色老头一区二区三区| 亚洲wwwav| 国产成人在线一区| 亚洲а∨天堂久久精品喷水| 伊人伊成久久人综合网小说| 久久亚洲国产精品| 久久久久久久久中文字幕| 欧美激情视频在线观看| 日韩精品在线观看一区| 欧美又大粗又爽又黄大片视频| 亚洲人成在线观看| 国产精品福利小视频| 国产亚洲一区精品| 久热精品视频在线免费观看| 久久久999成人| 亚洲国产黄色片| 日韩av在线网页| 欧美日韩国产区| 91在线|亚洲| 亚洲最大成人网色| 在线观看日韩专区| 成人免费黄色网| 久久免费视频在线| 日韩av在线最新| 国产精品av在线| 韩国三级日本三级少妇99| 久久精品人人爽| 日韩视频―中文字幕| 亚洲福利在线看| 亚洲成人av片在线观看| 国产精品久久视频| 九九九热精品免费视频观看网站| 亚洲福利视频网站| 一二美女精品欧洲| 亚洲综合中文字幕在线| 日韩精品久久久久| 国产精品国产三级国产aⅴ浪潮| 色狠狠av一区二区三区香蕉蜜桃| 欧美日韩精品在线视频| 精品网站999www| 欧美午夜精品在线| 欧美激情手机在线视频| 97视频在线观看免费高清完整版在线观看| 亚洲一区二区在线播放| 欧美电影在线观看网站| 亚洲偷欧美偷国内偷| 亚洲va欧美va国产综合剧情| 538国产精品一区二区在线| 久久亚洲精品一区二区| 美乳少妇欧美精品| 亚洲乱码国产乱码精品精| 琪琪亚洲精品午夜在线| 亚洲成人黄色在线观看| 久久手机精品视频| 日韩av色在线| 中文字幕在线看视频国产欧美| 亚洲免费视频网站| 国产日韩在线播放| 久久久久久有精品国产| 亚洲黄页网在线观看| 亚洲视频网站在线观看| 日韩精品日韩在线观看| 亚洲成人999| 国产成人精品一区| 国产精品白嫩初高中害羞小美女| 最近2019中文免费高清视频观看www99| 久久久久999| 亚洲视频在线观看网站| 欧美丰满片xxx777| 久热99视频在线观看| 欧美最猛性xxxxx(亚洲精品)| 最近2019中文字幕在线高清| 97久久精品国产| 日韩一区在线视频| 亚洲激情在线观看视频免费| 欧美日韩国产专区| 久久久天堂国产精品女人| 91夜夜揉人人捏人人添红杏| 日韩精品中文在线观看| 国产999精品视频| 亚洲九九九在线观看| 日韩黄色高清视频| 欧美日韩亚洲激情| 成人国产精品一区二区| 国产精品老女人精品视频| 久久久精品在线观看| 国产伦精品一区二区三区精品视频| 国产成人亚洲综合91精品| 韩国三级电影久久久久久| 国产亚洲人成a一在线v站| 中文字幕一区二区三区电影| 国产精品极品在线| 国产精品国产三级国产专播精品人| xxav国产精品美女主播| 中文字幕一精品亚洲无线一区| 成人中心免费视频| 亚洲天堂开心观看| 另类少妇人与禽zozz0性伦| 国产精品99免视看9| 日本精品久久电影| 不卡伊人av在线播放| 国产日韩在线观看av| 国产精品久久久久久亚洲影视| 在线精品视频视频中文字幕| 在线色欧美三级视频| 社区色欧美激情 | 亚洲成人aaa| 欧美二区在线播放| 国产精品久久久久久久7电影| 奇米4444一区二区三区| 日本精品视频在线播放| 国产一区二区三区中文| 国产成人精品999| 高潮白浆女日韩av免费看| 亚洲一区二区国产| 色综合久综合久久综合久鬼88| 国产ts人妖一区二区三区| 91精品在线观看视频| 欧美电影在线观看网站| 亚洲精品一区二区在线| 欧美伊久线香蕉线新在线| 成人黄色生活片| 伊人久久男人天堂| 精品久久久久久中文字幕大豆网| 欧美另类第一页| 2020欧美日韩在线视频| 精品国产欧美一区二区五十路| 欧美激情女人20p| 亚洲人成电影在线播放| 国产精品igao视频| 亚洲精品成人久久电影| 国产在线视频欧美| 国产成人精品在线播放| 国产精品日韩欧美| 国内精品久久影院|