今天碰到一个问题,SSM项目WEB-INF目录下的静态资源例如.css .js .font等文件没法访问。百度了一下,须要配置SpringMvc对访问静态资源的支持。css
若是将DispatcherServlet请求映射配置为"/",则Spring MVC将捕获Web容器全部的请求,包括静态资源的请求,Spring MVC会将它们当成一个普通请求处理,所以找不到对应处理器将致使错误。这多是个历史性的问题。因为早期的Spring MVC不能很好地处理静态资源,因此在web.xml中配置DispatcherServlet的请求映射,每每使用 *.do 、 *.xhtml等方式。这就决定了请求URL必须是一个带后缀的URL,而没法采用真正的REST风格的URL。html
如何让Spring框架可以捕获全部URL的请求,同时又将静态资源的请求转由Web容器处理,是可将DispatcherServlet的请求映射配置为"/"的前提。因为REST是Spring3.0最重要的功能之一,因此Spring团队很看重静态资源处理这项任务,给出了堪称经典的两种解决方案。web
方法一:采用<mvc:default-servlet-handler />spring
在springMVC-servlet.xml中配置<mvc:default-servlet-handler />后,会在Spring MVC上下文中定义一个org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,它会像一个检查员,对进入DispatcherServlet的URL进行筛查,若是发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,若是不是静态资源的请求,才由DispatcherServlet继续处理。服务器
通常Web应用服务器默认的Servlet名称是"default",所以DefaultServletHttpRequestHandler能够找到它。若是你全部的Web应用服务器的默认Servlet名称不是"default",则须要经过default-servlet-name属性显示指定:mvc
<mvc:default-servlet-handler default-servlet-name="所使用的Web服务器默认使用的Servlet名称" />app
采用这种方式的静态资源最好都放在webapp目录下,也就是WEB-INF的同级目录。更方便寻址,路径不会很长。./就表明了webapp目录。框架
方法2.采用<mvc:resources />webapp
暂时还未看懂,看懂了再来更新。。spa