web.xml里的主要配置都包括什么萌踱,都代表什么含義?


講解視頻

1.背景介紹

2.知識剖析

3.常見問題

4.解決方案

5.編碼實戰(zhàn)

6.擴(kuò)展思考

7.參考文獻(xiàn)

8.更多討論

1.背景介紹

web.xml作用:

當(dāng)我們用IDEA創(chuàng)建一個webapp項目時,往往在WEB-INF文件夾下槽地,會生成一個web.xml文件迁沫,這個配置文件的作用,就是初始化配置信息的捌蚊。

比如:Welcome頁面集畅、servlet、servlet-mapping缅糟、filter挺智、listener、啟動加載級別等窗宦。如果工程不需要上述配置時赦颇,則web.xml就不是必需的了二鳄。

2.知識剖析

web.xml配置元素:

web.xml配置元素

1.根元素

web.xml的模式文件是由Sun公司定義的,每個web.xml文件的根元素中媒怯, 都必須標(biāo)明這個web.xml使用的是哪個模式文檔订讼。其它的元素都放在之中,也是根節(jié)點(diǎn)扇苞。

2.上下文參數(shù)

含有一對或多對參數(shù)名和參數(shù)值欺殿,用作應(yīng)用的Servlet上下文初始化參數(shù),參數(shù)名在整個Web應(yīng)用中必須是惟一的鳖敷, 在web應(yīng)用的整個生命周期中上下文初始化參數(shù)都存在脖苏,Servlet和jsp任何時候可以對其進(jìn)行訪問。

3.監(jiān)聽器

Listener是Servlet的監(jiān)聽器定踱,可以監(jiān)聽客戶端的請求棍潘,服務(wù)端的操作等。

在application,session,request三個對象創(chuàng)建屋吨、銷毀或者屬性變動時自動執(zhí)行代碼的功能組件蜒谤。

常見的listener有:ServletContextListener、ServletRequestListener至扰、HttpSessionListener等鳍徽。

4.過濾器

過濾器對web服務(wù)器管理的所有web資源:例如Jsp, Servlet, 靜態(tài)圖片文件或靜態(tài) html 文件等進(jìn)行攔截,從而實現(xiàn)一些特殊的功能敢课。例如實現(xiàn)URL級別的權(quán)限訪問控制阶祭、過濾敏感詞匯、壓縮響應(yīng)信息等一些高級功能直秆。 它主要用于對用戶請求進(jìn)行預(yù)處理濒募,也可以對HttpServletResponse進(jìn)行后處理。

5.servlet

servlet是一種運(yùn)行服務(wù)器端的java應(yīng)用程序圾结,具有獨(dú)立于平臺和協(xié)議的特性瑰剃,并且可以動態(tài)的生成web頁面,它工作在客戶端請求與服務(wù)器響應(yīng)的中間層筝野。 Servlet 的主要功能在于交互式地瀏覽和修改數(shù)據(jù)晌姚,生成動態(tài) Web 內(nèi)容。

servlet后常跟servlet-mapping歇竟,該元素在Servlet和URL樣式之間定義一個映射挥唠,即servlet類提供一個url,在地址欄輸入對應(yīng)的映射路徑就可以訪問servlet焕议。

3.常見問題

web.xml的加載過程宝磨,元素的加載順序

4.解決方案

WEB容器啟動時,加載過程如下:

1.啟動一個WEB項目的時候,WEB容器會去讀取它的配置文件web.xml唤锉,讀取和兩個結(jié)點(diǎn)世囊。

2.然后,容器創(chuàng)建一個ServletContext窿祥,這個web項目的所有部分都將共享這個上下文茸习。

3.容器將轉(zhuǎn)換為鍵值對,并交給servletContext壁肋。

4.容器創(chuàng)建&lft;listener>中的類實例,創(chuàng)建監(jiān)聽器籽慢。

首先可以肯定的是浸遗,加載順序與它們在web.xml文件中的先后順序無關(guān)。即不會因為filter寫在listener的前面而會先加載filter箱亿。 同時還存在著這樣一種配置節(jié):context-param跛锌,它用于向ServletContext提供鍵值對,即應(yīng)用程序上下文信息届惋。

web.xml的加載順序是:context-param->listener->filter->servlet而同個類型之間的實際程序調(diào)用的時候的順序是根據(jù)對應(yīng)的mapping的順序進(jìn)行調(diào)用的髓帽。

load-on-startup元素標(biāo)記容器是否在啟動的時候就加載這個servlet,當(dāng)配置了多個servelet的時候脑豹,容器就需要讀取它的值來決定加載順序郑藏。

當(dāng)值小于0或者沒有指定時,則表示容器在該servlet被選擇時才會去加載瘩欺。當(dāng)值為0或者大于0時必盖,表示容器在應(yīng)用啟動時就加載并初始化這個servlet。

正數(shù)的值越小俱饿,該servlet的優(yōu)先級越高歌粥,應(yīng)用啟動時就越先加載。所以拍埠,x失驶,中x的取值1,2枣购,3嬉探,4,5代表的是優(yōu)先級坷虑,而非啟動延遲時間甲馋。

5.編碼實戰(zhàn)

6.擴(kuò)展思考

filter、listener迄损、interceptor之間的區(qū)別

filter能夠在一個請求到達(dá)servlet之前預(yù)處理用戶請求定躏,也可以在離開servlet時處理http響應(yīng): 在執(zhí)行servlet之前,首先執(zhí)行filter程序,并為之做一些預(yù)處理工作痊远; 根據(jù)程序需要修改請求和響應(yīng)垮抗; 在servlet被調(diào)用之后截獲servlet的執(zhí)行

listener的作用則與接口類型有關(guān),監(jiān)聽器是在發(fā)生關(guān)注的事件后回調(diào)開發(fā)者提供的方法碧聪。

interceptor 攔截器冒版,類似于filter,不過它不在web.xml中配置,跟使用的框架有關(guān)逞姿,如果使用Spring框架則在spring容器指定的配置文件中配置辞嗡;并且不是針對URL的,而是針對action,當(dāng)頁面提交 action時滞造,進(jìn)行過濾操作续室。

7.參考文獻(xiàn)

https://www.cnblogs.com/shangxiaofei/p/5328377.html

http://www.blogjava.net/xzclog/archive/2011/09/29/359789.html

8.更多討論

web.xml可選元素和出現(xiàn)次數(shù)?

web-app (icon?, display-name?, description?,?distributable?, context-param*, filter*, filter-mapping*,?listener*, servlet*, servlet-mapping*, session-config?,?mime-mapping*, welcome-file-list?,?error-page*, taglib*, resource-env-ref*, resource-ref*,?security-constraint*, login-config?, security-role*,env-entry*,?ejb-ref*, ejb-local-ref*

問號(谒养?)表示子元素是可選的挺狰,而且只能出現(xiàn)一次。星號(*)表示子元素可在部署描述符中出現(xiàn)零次或多次买窟。

url-pattern有哪些匹配規(guī)則丰泊?

精確匹配 路徑匹配 匹配任意的url

ptteng.github.io/PPT/PPT-java/JAVA-task2-web.xml.html#/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市始绍,隨后出現(xiàn)的幾起案子瞳购,更是在濱河造成了極大的恐慌,老刑警劉巖疆虚,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件苛败,死亡現(xiàn)場離奇詭異,居然都是意外死亡径簿,警方通過查閱死者的電腦和手機(jī)罢屈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來篇亭,“玉大人缠捌,你說我怎么就攤上這事∫氲伲” “怎么了曼月?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長柔昼。 經(jīng)常有香客問我哑芹,道長,這世上最難降的妖魔是什么捕透? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任聪姿,我火速辦了婚禮碴萧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘末购。我一直安慰自己破喻,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布盟榴。 她就那樣靜靜地躺著曹质,像睡著了一般。 火紅的嫁衣襯著肌膚如雪擎场。 梳的紋絲不亂的頭發(fā)上羽德,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機(jī)與錄音迅办,去河邊找鬼玩般。 笑死,一個胖子當(dāng)著我的面吹牛礼饱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播究驴,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼镊绪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了洒忧?” 一聲冷哼從身側(cè)響起蝴韭,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎熙侍,沒想到半個月后榄鉴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛉抓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年庆尘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巷送。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡驶忌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出笑跛,到底是詐尸還是另有隱情付魔,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布飞蹂,位于F島的核電站几苍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏陈哑。R本人自食惡果不足惜妻坝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一伸眶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧惠勒,春花似錦赚抡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至售担,卻和暖如春赁遗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背族铆。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工岩四, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哥攘。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓剖煌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親逝淹。 傳聞我的和親對象是個殘疾皇子耕姊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容