web.xml文件我們都不陌生,每一個web應(yīng)用中都會有一個web.xml文件。在Tomcat安裝目錄下的conf目錄也有web.xml文件,而今天我們分析的web.xml正是Tomcat的web.xml。
我們知道,每一個web應(yīng)用最終是被發(fā)布到Tomcat的webappes目錄下,Tomcat是它們的運行環(huán)境??梢岳斫鉃門omcat的web.xml文件是每一個web應(yīng)用的web.xml的父文件,Tomcat將每個應(yīng)用的公共配置提取出來放在conf目錄下的web.xml中,每個應(yīng)用的個性配置放在自己的web.xml文件中。如圖1-1所示:
圖1-1 web.xml關(guān)系圖
下面我們結(jié)合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>
對應(yīng)一個類名為DefaultServlet的Servlet,我們看這個servlet對應(yīng)的<servlet-mapping>中的映射路徑是“/”,匹配所有路徑。優(yōu)先級最低,當用戶訪問的url沒有匹配的Servlet或頁面時,訪問DefaultServlet ,它會響應(yīng)給客戶端一個404狀態(tài)碼。
(2)<servlet-name>jsp</servlet –name>
對應(yīng)一個類名為JspServlet的Servlet,該Servlet的映射路徑是“*.jsp”、“*.jspx”。即當用戶請求的資源是一個jsp頁面等時,訪問的是JspServlet.我們知道瀏覽器不能顯示動態(tài)資源,因此JspServlet的作用就是將當前訪問的jsp頁面轉(zhuǎn)換成靜態(tài)的html頁面,然后再響應(yīng)給瀏覽器。
(3)<session-timeout>30<session-timeout>
該標簽是設(shè)置session的存活時間為30分鐘,session是一個會話,后面我們會學習它。
(4)<mime-mapping><extension>htm</extension><mime-type>text/html</mime-type></mime-mapping>
其中<extension>標簽的內(nèi)容指的是響應(yīng)文件的后綴名,通過后綴名進而知道它的mime類型,即<mime-type>標簽的內(nèi)容。這是服務(wù)器告訴瀏覽器響應(yīng)回去的響應(yīng)內(nèi)容的mime類型。
(5)<welcome-file-list>
該標簽的子標簽中的內(nèi)容對應(yīng)的是歡迎頁。在應(yīng)用的web.xml中如果沒有對<welcome-file-list>進行覆蓋,那么默認主頁為index.html、index.html、index.jsp。
本文版權(quán)歸傳智播客Java培訓學院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:傳智播客Java培訓學院
首發(fā):http://8y3kgpwe.cn/javaee