web.xml文件詳解

web.xml文件詳解

前言:一般的web工程中都會(huì)用到web.xml映凳,web.xml主要用來配置胆筒,可以方便的開發(fā)web工程。web.xml主要用來配置Filter诈豌、Listener、Servlet等抒和。但是要說明的是web.xml并不是必須的矫渔,一個(gè)web工程可以沒有web.xml文件。

1摧莽、WEB工程加載web.xml過程

經(jīng)過個(gè)人測(cè)試庙洼,WEB工程加載順序與元素節(jié)點(diǎn)在文件中的配置順序無關(guān)。即不會(huì)因?yàn)?filter 寫在 listener 的前面而會(huì)先加載 filter镊辕。WEB容器的加載順序是:ServletContext -> context-param -> listener -> filter -> servlet油够。并且這些元素可以配置在文件中的任意位置。

加載過程順序如下:

  • 啟動(dòng)一個(gè)WEB項(xiàng)目的時(shí)候征懈,WEB容器會(huì)去讀取它的配置文件web.xml石咬,讀取<listener>和<context-param>兩個(gè)結(jié)點(diǎn)。

  • 緊急著卖哎,容創(chuàng)建一個(gè)ServletContext(servlet上下文)鬼悠,這個(gè)web項(xiàng)目的所有部分都將共享這個(gè)上下文。

  • 容器將<context-param>轉(zhuǎn)換為鍵值對(duì)亏娜,并交給servletContext焕窝。

  • 容器創(chuàng)建<listener>中的類實(shí)例,創(chuàng)建監(jiān)聽器维贺。

2它掂、web.xml文件元素詳解

1、schema

web.xml的模式文件是由Sun公司定義的溯泣,每個(gè)web.xml文件的根元素<web-app>中虐秋,都必須標(biāo)明這個(gè) web.xml使用的是哪個(gè)模式文件晰韵。其它的元素都放在<web-app></web-app>之中。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
</web-app>

2熟妓、<icon>Web應(yīng)用圖標(biāo)

指出IDE和GUI工具用來表示W(wǎng)eb應(yīng)用的大圖標(biāo)和小圖標(biāo)雪猪。

<icon>
    <small-icon>/images/app_small.gif</small-icon>
    <large-icon>/images/app_large.gif</large-icon>
</icon>

3、<display-name>Web應(yīng)用名稱

提供GUI工具可能會(huì)用來標(biāo)記這個(gè)特定的Web應(yīng)用的一個(gè)名稱

<display-name>Tomcat Example</display-name>

4起愈、<disciption>Web應(yīng)用描述

給出于此相關(guān)的說明性文本

<disciption>Tomcat Example servlets and JSP pages.</disciption>

5只恨、<context-param>上下文參數(shù)

聲明應(yīng)用范圍內(nèi)的初始化參數(shù)。它用于向 ServletContext提供鍵值對(duì)抬虽,即應(yīng)用程序上下文信息官觅。我們的listener, filter等在初始化時(shí)會(huì)用到這些上下文中的信息。在servlet里面可以通過getServletContext().getInitParameter("context/param")得到阐污。

<context-param>
    <param-name>ContextParameter</para-name>
    <param-value>test</param-value>
    <description>It is a test parameter.</description>
</context-param>

6休涤、<filter>過濾器

將一個(gè)名字與一個(gè)實(shí)現(xiàn)javaxs.servlet.Filter接口的類相關(guān)聯(lián)。

<filter>
    <filter-name>setCharacterEncoding</filter-name>
    <filter-class>com.myTest.setCharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>setCharacterEncoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

7笛辟、<listener>監(jiān)聽器

<listener> 
    <listerner-class>com.listener.SessionListener</listener-class> 
</listener>

8功氨、<servlet>

<servlet></servlet> 用來聲明一個(gè)servlet的數(shù)據(jù),主要有以下子元素:

  • <servlet-name></servlet-name> 指定servlet的名稱
  • <servlet-class></servlet-class> 指定servlet的類名稱
  • <jsp-file></jsp-file> 指定web站臺(tái)中的某個(gè)JSP網(wǎng)頁(yè)的完整路徑
  • <init-param></init-param> 用來定義參數(shù)手幢,可有多個(gè)init-param捷凄。在servlet類中通過
  • getInitParamenter(String name)方法訪問初始化參數(shù)
  • <load-on-startup></load-on-startup>指定當(dāng)Web應(yīng)用啟動(dòng)時(shí),裝載Servlet的次序围来。當(dāng)值為正數(shù)或零時(shí):Servlet容器先加載數(shù)值小的servlet跺涤,再依次加載其他數(shù)值大的servlet。當(dāng)值為負(fù)或未定義:Servlet容器將在Web客戶首次訪問這個(gè)servlet時(shí)加載它监透。
  • <servlet-mapping></servlet-mapping> 用來定義servlet所對(duì)應(yīng)的URL桶错,包含兩個(gè)子元素
  • <servlet-name></servlet-name> 指定servlet的名稱
  • <url-pattern></url-pattern> 指定servlet所對(duì)應(yīng)的URL
<!-- 基本配置 -->
<servlet>
    <servlet-name>snoop</servlet-name>
    <servlet-class>SnoopServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>snoop</servlet-name>
    <url-pattern>/snoop</url-pattern>
</servlet-mapping>
<!-- 高級(jí)配置 -->
<servlet>
    <servlet-name>snoop</servlet-name>
    <servlet-class>SnoopServlet</servlet-class>
    <init-param>
        <param-name>foo</param-name>
        <param-value>bar</param-value>
    </init-param>
    <run-as>
        <description>Security role for anonymous access</description>
        <role-name>tomcat</role-name>
    </run-as>
</servlet>
<servlet-mapping>
    <servlet-name>snoop</servlet-name>
    <url-pattern>/snoop</url-pattern>
</servlet-mapping>

9、<session-config>會(huì)話超時(shí)配置

單位為分鐘胀蛮。

<session-config>
    <session-timeout>120</session-timeout>
</session-config>

10院刁、<mime-mapping>

<mime-mapping>
    <extension>htm</extension>
    <mime-type>text/html</mime-type>
</mime-mapping>

11、<welcome-file-list>歡迎文件頁(yè)

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
</welcome-file-list>

12醇滥、<error-page>錯(cuò)誤頁(yè)面

<!-- 1动羽、通過錯(cuò)誤碼來配置error-page凡怎。當(dāng)系統(tǒng)發(fā)生×××錯(cuò)誤時(shí)疮装,跳轉(zhuǎn)到錯(cuò)誤處理頁(yè)面托酸。 -->
<error-page>
    <error-code>404</error-code>
    <location>/NotFound.jsp</location>
</error-page>
<!-- 2、通過異常的類型配置error-page不跟。當(dāng)系統(tǒng)發(fā)生java.lang.NullException(即空指針異常)時(shí)颓帝,跳轉(zhuǎn)到錯(cuò)誤處理頁(yè)面。 -->
<error-page>
    <exception-type>java.lang.NullException</exception-type>
    <location>/error.jsp</location>
</error-page>

13、<jsp-config>設(shè)置jsp

<jsp-config> 包括 <taglib> 和 <jsp-property-group> 兩個(gè)子元素购城。其中<taglib> 元素在JSP 1.2 時(shí)就已經(jīng)存在吕座;而<jsp-property-group> 是JSP 2.0 新增的元素。

<jsp-property-group> 元素主要有八個(gè)子元素瘪板,它們分別為:

  • <description>:設(shè)定的說明
  • <display-name>:設(shè)定名稱
  • <url-pattern>:設(shè)定值所影響的范圍吴趴,如: /CH2 或 /*.jsp
  • <el-ignored>:若為 true,表示不支持 EL 語法
  • <scripting-invalid>:若為 true侮攀,表示不支持 <% scripting %>語法
  • <page-encoding>:設(shè)定 JSP 網(wǎng)頁(yè)的編碼
  • <include-prelude>:設(shè)置 JSP 網(wǎng)頁(yè)的抬頭锣枝,擴(kuò)展名為 .jspf
  • <include-coda>:設(shè)置 JSP 網(wǎng)頁(yè)的結(jié)尾,擴(kuò)展名為 .jspf
<jsp-config>
    <taglib>
        <taglib-uri>Taglib</taglib-uri>
        <taglib-location>/WEB-INF/tlds/MyTaglib.tld</taglib-location>
    </taglib>
    <jsp-property-group>
        <description>Special property group for JSP Configuration JSP example.</description>
        <display-name>JSPConfiguration</display-name>
        <url-pattern>/jsp/* </url-pattern>
        <el-ignored>true</el-ignored>
        <page-encoding>GB2312</page-encoding>
        <scripting-invalid>true</scripting-invalid>
        <include-prelude>/include/prelude.jspf</include-prelude>
        <include-coda>/include/coda.jspf</include-coda>
    </jsp-property-group>
</jsp-config>

對(duì)于Web 應(yīng)用程式來說兰英,Scriptlet 是個(gè)不樂意被見到的東西撇叁,因?yàn)樗鼤?huì)使得HTML 與Java 程式碼交相混雜,對(duì)于程式的維護(hù)來說相當(dāng)?shù)穆闊┢杳常匾臅r(shí)候陨闹,可以在web.xml 中加上<script-invalid> 標(biāo)簽,設(shè)定所有的JSP 網(wǎng)頁(yè)都不可以使用Scriptlet薄坏。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末趋厉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子颤殴,更是在濱河造成了極大的恐慌觅廓,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涵但,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡帖蔓,警方通過查閱死者的電腦和手機(jī)矮瘟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來塑娇,“玉大人澈侠,你說我怎么就攤上這事÷癯辏” “怎么了哨啃?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)写妥。 經(jīng)常有香客問我拳球,道長(zhǎng),這世上最難降的妖魔是什么珍特? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任祝峻,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘莱找。我一直安慰自己酬姆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布奥溺。 她就那樣靜靜地躺著辞色,像睡著了一般。 火紅的嫁衣襯著肌膚如雪浮定。 梳的紋絲不亂的頭發(fā)上相满,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音壶唤,去河邊找鬼雳灵。 笑死,一個(gè)胖子當(dāng)著我的面吹牛闸盔,可吹牛的內(nèi)容都是我干的悯辙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼迎吵,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼躲撰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起击费,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤拢蛋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蔫巩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谆棱,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年圆仔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了垃瞧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡坪郭,死狀恐怖个从,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情歪沃,我是刑警寧澤嗦锐,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站沪曙,受9級(jí)特大地震影響奕污,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜珊蟀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一菊值、第九天 我趴在偏房一處隱蔽的房頂上張望外驱。 院中可真熱鬧,春花似錦腻窒、人聲如沸昵宇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)瓦哎。三九已至,卻和暖如春柔逼,著一層夾襖步出監(jiān)牢的瞬間蒋譬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工愉适, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留犯助,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓维咸,卻偏偏與公主長(zhǎng)得像剂买,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子癌蓖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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

  • 前言:一般的web工程中都會(huì)用到web.xml瞬哼,web.xml主要用來配置,可以方便的開發(fā)web工程租副。web.xm...
    李天火閱讀 1,229評(píng)論 0 6
  • 本章聊一聊ServletContext 3.0規(guī)范中定義的注解以及在web應(yīng)用中使用的框架和庫(kù)的可插拔性的提升坐慰。 ...
    Lucky_Micky閱讀 6,032評(píng)論 0 3
  • web.xml文件的作用及基本配置 web.xml是什么啊 web.xml是web項(xiàng)目的配置文件,一般的web工程...
    是夏莞也是CiCi閱讀 28,027評(píng)論 1 14
  • 這部分主要是與Java Web和Web Service相關(guān)的面試題用僧。 96结胀、闡述Servlet和CGI的區(qū)別? 答...
    雜貨鋪老板閱讀 1,404評(píng)論 0 10
  • 溫昀本是下界修仙之人,他已經(jīng)成仙多年责循,本該是仙風(fēng)道骨把跨,無牽無掛,可最近經(jīng)常心緒不寧沼死,因?yàn)榭傆幸稽c(diǎn)塵念讓他無法自拔,...
    溫如故閱讀 241評(píng)論 0 0