咱们知道在整合spring mvc框架的时候须要在web.xml中配置一个servlet css
代码以下web
<!--spring mvc 的DispatcherServlet--> <servlet> <servlet-name>enterprise-servlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--spring mvc 的 配置文件名称,若是配置文件名和<servlet-name>相同则不须要此配置--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:enterprise-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <!--对文件上传的限制--> <multipart-config> <max-file-size>52428800</max-file-size> <max-request-size>52428800</max-request-size> <file-size-threshold>0</file-size-threshold> </multipart-config> </servlet> <servlet-mapping> <servlet-name>enterprise-servlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
其中servlet拦截的url-pattern为 / :这表明该servlet拦截全部的请求,包括静态资源文件所发出的请求 spring
如: http://localhost:8080/work/public/image/image.png 该请求会进入DispatcherServlet,而后会检查controller中是否存在该请求映射requestMapping,很明显此时没有相匹配的请求映射,最终页面显示图片加载失败。tomcat
方法一:mvc
这里的DispatcherServlet 是spring mvc 中的一个servlet,而面对项目中众多的servlet,他们都会有一个加载顺序。此时咱们能够经过激活tomcat的默认servlet default来加载静态资源.可是该servlet必须配置在DispatcherServlet的前面。app
以下配置:框架
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/public/*</url-pattern><!--public下存放静态文件,包括css,lib,image等--> </servlet-mapping>
也能够分别定义:url
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping>
方法二:spa
spring mvc 提供了解决方法,即在spring mvc 的配置文件中配置一个handler,变化:在走完DispatcherServlet以后若是没有匹配到controller,则会再去请求静态资源,查看是否存在该静态资源,而后加载!.net
<mvc:default-servlet-handler/>
详情能够看看这里:springMVC对静态资源访问的处理