这里不讲有几种过滤静态文件的方法,网上一搜一大把,大概三种。
三种方式都试了n次,最后决定用了spring自带的默认方式,成功了,配置需要两部:
第一:web.xml文件中配置如下一段代码
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/css/*</url-pattern>
<url-pattern>/static/js/*</url-pattern>
<url-pattern>/static/img/*</url-pattern>
<url-pattern>/static/layer/*</url-pattern>
</servlet-mapping> 网上说这段代码必须写到spring拦截器DispatcherServlet的前面,但是我测试了,前面后面都好使。第二:spring-mvc.xml中添加如下一段配置:<mvc:default-servlet-handler/>
这样就彻底完成了。
问题来了,说说我遇到的问题,刚开始配置的代码如下:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
<url-pattern>*.css</url-pattern>
</servlet-mapping> spring-mvc.xml依旧加那一句话,我自己写了一个拦截器做测试,发现不好使,所有的静态文件依然会被拦截,后来查阅资料,说default配置url必须从根目录开始,所以修改web.xml代码如下:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/*.js</url-pattern>
<url-pattern>/*.css</url-pattern>
</servlet-mapping> 测试发现依然不行,后来又改成绝对路径: /static/css/*.css ,然后测试好了。
如果你们static下全是需要过滤的文件直接写成: /static/* 就可以,我之所以这么写,是因为static下面有html页面,html是需要被拦截的内容。。
遇到问题必须静下心来思考原因,不能着急,越着急越不好使,这个破问题折腾了半天多。
本文介绍了在Spring中配置静态文件过滤时遇到的问题及解决方法。通过尝试三种不同的方式,最终选择了Spring自带的default-servlet-handler实现过滤,并在web.xml中添加相应配置,成功解决问题。

532

被折叠的 条评论
为什么被折叠?



