Web.xml配置說(shuō)明以及加載過(guò)程

1. web.xml配置詳解

<web-app>

? ? <!--指定WEB應(yīng)用的名字-->

? ? <display-name>MyWeb</display-name>

? ? <!--WEB應(yīng)用描述信息-->

? ? <description>MyWeb demo</description>

? ? <!--web的初始化參數(shù),通過(guò)ServletContextEvent.getServletContext().getInitParameter("field")獲得value的值(ServletContextEvent通過(guò)listener獲得)-->

? ? <context-param>

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

? ? ? ? <param-value>/WEB-INF/applicationContext.xml</param-value>

? ? ? ? <description>web的ApplicationContext上下問(wèn)文件配置</description>

? ? </context-param>

? ? <!--filter 和filter-mapping 必須是成對(duì)出現(xiàn)-->

? ? <!--攔截/*的路徑,執(zhí)行CharacterEncodingFilter的父類的OncePerRequestFilter的doFilter(doFilter中調(diào)用doFilterInternal方法,設(shè)置request和response的編碼方式設(shè)置為UTF-8)-->

? ? <filter>

? ? ? ? <filter-name>utf8-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>

? ? ? ? <init-param>

? ? ? ? ? ? <param-name>forceEncoding</param-name>

? ? ? ? ? ? <param-value>true</param-value>

? ? ? ? </init-param>

? ? </filter>

? ? <filter-mapping>

? ? ? ? <filter-name>utf8-encoding</filter-name>

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

? ? </filter-mapping>

? ? <!--servlet 監(jiān)聽(tīng)配置硫麻,項(xiàng)目啟動(dòng)時(shí)執(zhí)行contextInitialized(ServletContextEvent servletContextEvent)方法鸽照,項(xiàng)目停止時(shí)執(zhí)行contextDestroyed(ServletContextEvent event)-->

? ? <listener>

? ? ? ? <listerner-class>org.springframework.web.context.ContextLoaderListener</listener-class>

? ? </listener>


? ? <!--servlet和servlet-mapping是成對(duì)出現(xiàn)的往声,服務(wù)啟動(dòng)時(shí),執(zhí)行HttpServlet.init(ServletConfig config)方法,當(dāng)用戶請(qǐng)求/myservlet/*路徑時(shí),執(zhí)行HttpServlet.service(HttpServletRequest req, HttpServletResponse resp)方法-->

? ? <servlet>

? ? ? ? <servlet-name>myservlet</servlet-name>

? ? ? ? <servlet-class>javax.servlet.http.HttpServlet</servlet-class>

? ? ? ? <init-param>

? ? ? ? ? ? <param-name>paramField</param-name>

? ? ? ? ? ? <param-value>paramValue</param-value>

? ? ? ? </init-param>

? ? </servlet>

? ? <servlet-mapping>

? ? ? ? <servlet-name>myservlet</servlet-name>

? ? ? ? <url-pattern>/myservlet/*</url-pattern>

? ? </servlet-mapping>

? ? <!--會(huì)話超時(shí)時(shí)間設(shè)置,單位是分鐘-->

? ? <session-config>

? ? ? ? <session-timeout>10</session-timeout>

? ? </session-config>

? ? <!--mime-mapping元素將mime類型映射到擴(kuò)展名, 用于規(guī)定下載格式-->

? ? <mime-mapping>

? ? ? ? <extension>htm</extension>

? ? ? ? <mime-type>text/html</mime-type>

? ? </mime-mapping>

? ? <mime-mapping>

? ? ? ? <extension>pdf</extension>

? ? ? ? <mime-type>application/pdf</mime-type>

? ? </mime-mapping>

? ? <mime-mapping>

? ? ? ? <extension>doc</extension>

? ? ? ? <mime-type>application/msword</mime-type>

? ? </mime-mapping>

? ? <mime-mapping>

? ? ? ? <extension>xls</extension>

? ? ? ? <mime-type>application/msexcel</mime-type>

? ? </mime-mapping>


? ? <!--指定Web項(xiàng)目的歡迎頁(yè)面-->

? ? <welcome-file-list>

? ? ? ? <welcome-file>index.jsp</welcome-file>

? ? ? ? <welcome-file>index.html</welcome-file>

? ? </welcome-file-list>

? ? <!--當(dāng)請(qǐng)求發(fā)生404錯(cuò)誤時(shí)耘婚,跳轉(zhuǎn)到404error.jsp頁(yè)面-->

? ? <error-page>

? ? ? ? <error-code>404</error-code>

? ? ? ? <location>/404error.jsp</location>

? ? </error-page>

? ? <!--當(dāng)Web服務(wù)發(fā)生java.lang.NullException異常時(shí),跳轉(zhuǎn)到nullerror.jsp頁(yè)面-->

? ? <error-page>

? ? ? ? <exception-type>java.lang.NullException</exception-type>

? ? ? ? <location>/nullerror.jsp</location>

? ? </error-page>

? ? <!--對(duì)tag庫(kù)文件名稱。前端JSP可以通過(guò)<%@ taglib uri="http://jakarta.apache.org/tomcat/debug-taglib" prefix="myTag"%>配置使用tag庫(kù)-->

? ? <taglib>

? ? ? ? <taglib-uri>http://jakarta.apache.org/tomcat/debug-taglib</taglib-uri>

? ? ? ? <taglib-location>/WEB-INF/tld/taglib.tld</taglib-location>

? ? </taglib>

? ? <!--配置資源相關(guān)的管理對(duì)象,可通過(guò)new InitialContext().lookup()獲得值-->

? ? <resource-env-ref>

? ? ? ? <resource-env-ref-name>jms/StockQueue</resource-env-ref-name>

? ? </resource-env-ref>

? ? <!--設(shè)置factory的外部資源-->

? ? <resource-ref>

? ? ? ? <description>java JDBC DataSource factory</description>

? ? ? ? <res-ref-name>jdbc/java_db</res-ref-name>

? ? ? ? <res-type>javax.sql.DataSource</res-type>

? ? ? ? <res-auth>dataManager</res-auth>

? ? </resource-ref>

? ? <security-constraint></security-constraint>

? ? <login-config></login-config>

? ? <security-role></security-role>

? ? <env-entry></env-entry>

</web-app>


2. web.xml加載過(guò)程:

1. Web項(xiàng)目啟動(dòng)的時(shí)候橄登,容器(如:tomcat)讀取webapp/WEB-INF/web.xml文件,讀取<context-param>和<listener>;

2. 創(chuàng)建ServletContex拢锹,Web項(xiàng)目所有部分都可以使用該上下文ServletContex谣妻;

3. 容器將<context-param></context-param>解析為key-value對(duì),并交給ServletContext;

4. 容器根據(jù)<listener></listener>中的類創(chuàng)建監(jiān)聽(tīng)實(shí)例,即啟動(dòng)監(jiān)聽(tīng)卒稳;

5. listener監(jiān)聽(tīng)類中會(huì)contextInitialized(ServletContextEvent servletContextEvent)初始化方法,可通過(guò)ServletContextEvent.getServletContext().getInitParameter("field")獲得value的值蹋半;

6. 解析<filters></filters>,并啟動(dòng)攔截器 攔截器開(kāi)始起作用,當(dāng)有請(qǐng)求進(jìn)入時(shí),執(zhí)行Filter的doFilter方法;

7. 最后加載和初始化配置在load on startup的servlets;

8. 加載Spring,如果filter需要用到bean,但加載順序是: 先加載filter 后加載spring充坑,則filter中初始化操作中的bean為null.

? ? 如果過(guò)濾器中要使用到 bean减江,可以將spring 的加載 改成 Listener的方式 :

<listener>??

? ? ? ? ?<listerner-class>org.springframework.web.context.ContextLoaderListener</listener-class>?

? </listener>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市捻爷,隨后出現(xiàn)的幾起案子辈灼,更是在濱河造成了極大的恐慌,老刑警劉巖也榄,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巡莹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡甜紫,警方通過(guò)查閱死者的電腦和手機(jī)降宅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)囚霸,“玉大人腰根,你說(shuō)我怎么就攤上這事⊥匦停” “怎么了唠雕?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)吨述。 經(jīng)常有香客問(wèn)我岩睁,道長(zhǎng),這世上最難降的妖魔是什么揣云? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任捕儒,我火速辦了婚禮,結(jié)果婚禮上邓夕,老公的妹妹穿的比我還像新娘刘莹。我一直安慰自己,他們只是感情好焚刚,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布点弯。 她就那樣靜靜地躺著,像睡著了一般矿咕。 火紅的嫁衣襯著肌膚如雪抢肛。 梳的紋絲不亂的頭發(fā)上狼钮,一...
    開(kāi)封第一講書(shū)人閱讀 50,050評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音捡絮,去河邊找鬼熬芜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛福稳,可吹牛的內(nèi)容都是我干的涎拉。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼的圆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鼓拧!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起越妈,我...
    開(kāi)封第一講書(shū)人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤季俩,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后叮称,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡藐鹤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年瓤檐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片娱节。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡挠蛉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肄满,到底是詐尸還是另有隱情谴古,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布稠歉,位于F島的核電站掰担,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏怒炸。R本人自食惡果不足惜带饱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望阅羹。 院中可真熱鬧勺疼,春花似錦、人聲如沸捏鱼。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)导梆。三九已至轨淌,卻和暖如春迂烁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背猿诸。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工婚被, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人梳虽。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓址芯,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親窜觉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子谷炸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

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