web.xml文件我們都不陌生,每一個web應用中都會有一個web.xml文件。在Tomcat安裝目錄下的conf目錄也有web.xml文件,而今天我們分析的web.xml正是Tomcat的web.xml。
我們知道,每一個web應用最終是被發(fā)布到Tomcat的webappes目錄下,Tomcat是它們的運行環(huán)境??梢岳斫鉃門omcat的web.xml文件是每一個web應用的web.xml的父文件,Tomcat將每個應用的公共配置提取出來放在conf目錄下的web.xml中,每個應用的個性配置放在自己的web.xml文件中。如圖1-1所示:
![](http://fskzgqt.cn/files/image/201604/20160426163303928.png)
圖1-1 web.xml關系圖
下面我們結合web.xml文件的內(nèi)容,來分析它的配置的作用,web.xml文件主要內(nèi)容如例1-1所示:
例1-1 conf/web.xml
... ...
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<!-- 這里省略了大概4000多行的MIME類型的定義,只給出兩種MIME類型的定義 -->
<mime-mapping>
<extension>bmp</extension>
<mime-type>image/bmp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>htm</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
對以上內(nèi)容進行分析,如下:
(1)<servlet-name>default</servlet-name>
對應一個類名為DefaultServlet的Servlet,我們看這個servlet對應的<servlet-mapping>中的映射路徑是“/”,匹配所有路徑。優(yōu)先級最低,當用戶訪問的url沒有匹配的Servlet或頁面時,訪問DefaultServlet ,它會響應給客戶端一個404狀態(tài)碼。
(2)<servlet-name>jsp</servlet –name>
對應一個類名為JspServlet的Servlet,該Servlet的映射路徑是“*.jsp”、“*.jspx”。即當用戶請求的資源是一個jsp頁面等時,訪問的是JspServlet.我們知道瀏覽器不能顯示動態(tài)資源,因此JspServlet的作用就是將當前訪問的jsp頁面轉(zhuǎn)換成靜態(tài)的html頁面,然后再響應給瀏覽器。
(3)<session-timeout>30<session-timeout>
該標簽是設置session的存活時間為30分鐘,session是一個會話,后面我們會學習它。
(4)<mime-mapping><extension>htm</extension><mime-type>text/html</mime-type></mime-mapping>
其中<extension>標簽的內(nèi)容指的是響應文件的后綴名,通過后綴名進而知道它的mime類型,即<mime-type>標簽的內(nèi)容。這是服務器告訴瀏覽器響應回去的響應內(nèi)容的mime類型。
(5)<welcome-file-list>
該標簽的子標簽中的內(nèi)容對應的是歡迎頁。在應用的web.xml中如果沒有對<welcome-file-list>進行覆蓋,那么默認主頁為index.html、index.html、index.jsp。
本文版權歸傳智播客Java培訓學院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:傳智播客Java培訓學院
首發(fā):http://fskzgqt.cn/javaee