了解web.xml

參考:https://www.cnblogs.com/roy-blog/p/7656834.html

web容器讀取web.xml文件,配置文件的加載順序:

? ? 3.1涛浙、context-param

? ? 3.2、listener

? ? 3.3、filter

? ? 3.4、servlet

二幅慌、細(xì)節(jié)

1、context-param:web應(yīng)用servlet上下文初始化參數(shù)的聲明酌媒。

2欠痴、listener:用來注冊(cè)一個(gè)監(jiān)聽器類迄靠。事件監(jiān)聽程序在以下情況時(shí)通知

????①應(yīng)用的啟動(dòng)和關(guān)閉秒咨;

????②session的創(chuàng)建與銷毀,屬性的新增掌挚、移除和更改雨席;????

????③對(duì)象被綁定到session中或從session中刪除哀托;

3办悟、filter:過濾器宏榕,就是對(duì)請(qǐng)求進(jìn)行過濾萤晴,filter也會(huì)在項(xiàng)目啟動(dòng)的時(shí)候被實(shí)例化两波。一般一個(gè)filter要對(duì)應(yīng)filter-mapping埃唯,用于篩選所要執(zhí)行過濾器中代碼的url路徑免糕。如果一個(gè)filter沒有filter-mapping善镰,那它存在的意義就不大是目,它在web.xml存在的目的純粹就是為了在項(xiàng)目啟動(dòng)的時(shí)候被實(shí)例化谤饭,從而執(zhí)行其內(nèi)部的代碼。

三懊纳、一個(gè)簡(jiǎn)單的web.xml文件詳解

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://xmlns.jcp.org/xml/ns/javaee"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee

http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

id="WebApp_ID" version="3.1">

<!-- 配置加載Spring文件的監(jiān)聽器-->

<context-param>

? ? <param-name>contextConfigLocation</param-name>

? ? <param-value>classpath:applicationContext.xml</param-value>

</context-param>

<listener>

????<listener-class>

????????org.springframework.web.context.ContextLoaderListener

????</listener-class>

</listener>

<!-- 編碼過濾器 -->

<filter>

????<filter-name>encoding</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>encoding</filter-name>

????<url-pattern>*.action</url-pattern>

</filter-mapping>

<!-- 配置Spring MVC前端核心控制器 -->

<servlet>

????<servlet-name>springmvc</servlet-name>

????<servlet-class>

????????org.springframework.web.servlet.DispatcherServlet

????</servlet-class>

????<init-param>

????????<param-name>contextConfigLocation</param-name>

????????<param-value>classpath:springmvc-config.xml</param-value>

????</init-param>

????<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

????<servlet-name>springmvc</servlet-name>

????<url-pattern>*.action</url-pattern>

</servlet-mapping>

</web-app>

1揉抵、如果在web.xml中不寫任何參數(shù)配置信息,默認(rèn)的路徑是/WEB-INF/applicationContext.xml嗤疯,在WEB-INF目錄下創(chuàng)建的xml文件的名稱必須是applicationContext.xml冤今;contextConfigLocation 定義了要裝入的 Spring 配置文件,通過ContenxtLoarderListener實(shí)現(xiàn)茂缚。

2戏罢、ContextLoaderListener監(jiān)聽器的作用就是啟動(dòng)Web容器時(shí),自動(dòng)裝配ApplicationContext的配置信息脚囊。

3龟糕、DispatcherServlet:一個(gè)特殊的servlet,是整個(gè)spring mvc框架的核心凑术,他是一個(gè)前端servlet翩蘸,spring mvc經(jīng)過前端servlet來接受所有的請(qǐng)求,然后再講具體工作派發(fā)給其他的的servlet來具體實(shí)現(xiàn)淮逊。同時(shí)催首,名為springmvc的servlet讀取了contextConfigLocation所定義的配置文件(classpath:ApplicationContext-mvc.xml)扶踊,啟動(dòng)了web層的spring容器,在這個(gè)容器里郎任,我們初始化了所有的controller類秧耗。

4、把DispatcherServlet首先加載的原因:由于初始化DispatcherServlet伴隨著啟動(dòng)spring mvc容器舶治,所以需要較長(zhǎng)的時(shí)間分井,所以我們希望在項(xiàng)目啟動(dòng)的時(shí)候就進(jìn)行初始化的操作。因?yàn)檫@個(gè)屬性設(shè)為正數(shù)的表示在項(xiàng)目啟動(dòng)的時(shí)候就初始化霉猛,數(shù)字越小表明越早初始化尺锚。如果我們將其設(shè)為負(fù)數(shù)的話。那么在項(xiàng)目啟動(dòng)的時(shí)候惜浅,將不會(huì)啟動(dòng)spring mvc的容器瘫辩,而是當(dāng)我們第一次訪問某個(gè)controller所對(duì)應(yīng)的action的時(shí)候才來加載啟動(dòng)容器,這將會(huì)造成較長(zhǎng)時(shí)間的等待坛悉,所以我們一般將load-on-startup設(shè)為1伐厌。

5、context-param與init-param區(qū)別

? ? 5.1裸影、init-parm配置在<servlet>標(biāo)簽中,用來初始化當(dāng)前的Servlet的,屬于當(dāng)前Servlet的配置挣轨。

? ? 5.2、context-param直接配置在web.xml的<web-app>標(biāo)簽中,屬于上下文參數(shù),在整個(gè)web應(yīng)用中都可以使用,它是全局的轩猩。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末卷扮,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子界轩,更是在濱河造成了極大的恐慌画饥,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浊猾,死亡現(xiàn)場(chǎng)離奇詭異抖甘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)葫慎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門衔彻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人偷办,你說我怎么就攤上這事艰额。” “怎么了椒涯?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵柄沮,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng)祖搓,這世上最難降的妖魔是什么狱意? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮拯欧,結(jié)果婚禮上详囤,老公的妹妹穿的比我還像新娘。我一直安慰自己镐作,他們只是感情好藏姐,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著该贾,像睡著了一般羔杨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上靶庙,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天问畅,我揣著相機(jī)與錄音娃属,去河邊找鬼六荒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛矾端,可吹牛的內(nèi)容都是我干的掏击。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼秩铆,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼砚亭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起殴玛,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤捅膘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后滚粟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寻仗,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年凡壤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了署尤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡亚侠,死狀恐怖曹体,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情硝烂,我是刑警寧澤箕别,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響串稀,放射性物質(zhì)發(fā)生泄漏啥酱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一厨诸、第九天 我趴在偏房一處隱蔽的房頂上張望镶殷。 院中可真熱鬧,春花似錦微酬、人聲如沸绘趋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽陷遮。三九已至,卻和暖如春垦江,著一層夾襖步出監(jiān)牢的瞬間帽馋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來泰國打工比吭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绽族,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓衩藤,卻偏偏與公主長(zhǎng)得像吧慢,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赏表,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345