在项目开发中我们通常通过如下配置来完成所有web请求的处理:
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
这样配置,默认情况下会拦截静态资源,会导致静态资源找不到,会出现类似下图的错误
解决上面404的问题,有如下几种方案:
方案一:
激活Tomcat的defaultServlet来处理静态文件,该配置在tomcat的conf 下面的web.xml中,我们可以在项目的web.xml中加入如下代码
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
如果涉及多种静态文件,写多个即可
方案二: 在spring3.0.4以后版本提供了mvc:resources , 使用方法:
<mvc:annotation-driven/>
<mvc:resources mapping="/**/*.css" location="statics/css/"/>
方案三:使用<mvc:default-servlet-handler/>,配置如下:
<mvc:default-servlet-handler/>
方案四:默认请求加后缀,再去拦截,配置如下:
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/*.htm</url-pattern>
</servlet-mapping>