默认 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主要用于处理静态资源,如HTML、图片、CSS、JS文件等,而且为了提升服务器性能,Tomcat对访问文件进行缓存。按照默认配置,客户端请求路径与资源的物理路径是一致的。
- 如果我们希望修改DefaultServlet的映射路径,只需要将Web应用中web.xml配置进行如下配置 ,
- 修改DefaultServlet url-pattern改为“/static/*”
- 修改后DefaultServlet只会处理“/static/*“ 目录下静态资源
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
- 如果我们希望自定义Servlet映射路径为"/" ,只需要将Web应用中web.xml配置进行如下配置
- DispatcherServlet拦截“/”,拦截了所有的请求
- DefaultServlet 失效,会导致.js,*.gif静态资源的访问也会被DispatcherServlet 拦截了,无法访问静态资源
- 如果期望DefaultServlet 拦截静态资源需要给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>
网友评论