项目场景:
使用SpringMVC对项目中静态资源的访问,如js、css和img等文件。
问题描述
SpringMVC中前端控制器的url-pattern设置为 / ,会匹配到所有的访问路径,这样不会执行Tomcat内置的DefaultServlet处理。
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<!--/ 会匹配到所有的访问路径,但不会匹配像*.jsp这样的url-->
<url-pattern>/</url-pattern>
</servlet-mapping>
可以采用两种方式解决该问题
方式一:SpringMVC配置文件中使用mvc:resouces标签
<mvc:resources mapping="/js/**" location="/js/"/>
<mvc:resources mapping="/css/**" location="/css/"/>
<mvc:resources mapping="/img/**" location="/img/"/>
方式二:SpringMVC配置文件中使用mvc:default-servlet-handler/标签
<mvc:default-servlet-handler/>
问题详情:在使用了方式一配置之后重启服务器,还是无法访问静态资源。
原因分析:
1.看到有文章说是tomcat项目里面的SpringMVC配置文件没有更新,经过查看发现已经更新了。
2.看到有人说是Idea的bug,遂重启Idea,有用。详情见:关于idea springmvc的标签<mvc:resources>不能正确的过滤资源的问题,该文章说的很详细。
解决方案:
重启Idea