对于一些刚接触springmvc框架,用其搭建项目之处,发现访问静态资源出现404,原因是在web.xml中配置disptachServlet拦截了所有请求,
<!-- 加载spring的配置文件的路径 -->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern> <!-- 拦截所有请求 -->
</servlet-mapping>
而该servlet无法获取静态资源,所以会报错,需要通过配置将静态资源交由默认的servlet去处理。
对于tomcat来资源分三种,
1.静态资源交由DefaultServlet处理,有css,html,js,图片等。
2.servlet,交由InvokerServlet处理。
3.JSP tomcat交由JspServlet处理。
springmvc配置默认资源处理
1.通过 在springmvc.xml文件中添加<mvc:default-servlet-handler />
<mvc:default-servlet-handler />将静态资源的处理经由Spring MVC框架交回Web应用服务器处理。
2. 使用mvc:resources,配置映射路径。
<mvc:resources mapping="/img/" location="/img/" cache-period=“31556926”/>
<mvc:resources mapping="/js/" location="/js/" cache-period=“31556926”/>
<mvc:resources mapping="/css/**" location="/css/" cache-period=“31556926”/>