默認 web.xml
Tomcat$CATALINA_BASE/conf/web.xml中默認定義了兩個Servlet DefaultServlet 和 JspServlet,
Tomcat$CATALINA_BASE/conf/web.xml為Web應用的默認部署描述文件,因此這兩個Servlet會默認存在所有Web應用容器中。
DefaultServlet
配置
<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-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
職能
- DefaultServlet為默認的Servlet,當客戶端請求不能匹配其他所有Servlet時,將由Servlet處理.
- DefaultServlet主要用于處理靜態(tài)資源,如HTML、圖片、CSS、JS文件等,而且為了提升服務器性能,Tomcat對訪問文件進行緩存。按照默認配置,客戶端請求路徑與資源的物理路徑是一致的。
- 如果我們希望修改DefaultServlet的映射路徑,只需要將Web應用中web.xml配置進行如下配置 ,
- 修改DefaultServlet url-pattern改為“/static/*”
- 修改后DefaultServlet只會處理“/static/*“ 目錄下靜態(tài)資源
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
- 如果我們希望自定義Servlet映射路徑為"/" ,只需要將Web應用中web.xml配置進行如下配置
- DispatcherServlet攔截“/”,攔截了所有的請求
- DefaultServlet 失效,會導致.js,*.gif靜態(tài)資源的訪問也會被DispatcherServlet 攔截了,無法訪問靜態(tài)資源
- 如果期望DefaultServlet 攔截靜態(tài)資源需要給DefaultServlet 配置一個新的映射路徑
<servlet>
<servlet-name>SpringMvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringMvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>