为什么spring默认对静态文件的过滤不生效 default-servlet-handler

本文介绍了在Spring中配置静态文件过滤时遇到的问题及解决方法。通过尝试三种不同的方式,最终选择了Spring自带的default-servlet-handler实现过滤,并在web.xml中添加相应配置,成功解决问题。

这里不讲有几种过滤静态文件的方法,网上一搜一大把,大概三种。

三种方式都试了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是需要被拦截的内容。。


遇到问题必须静下心来思考原因,不能着急,越着急越不好使,这个破问题折腾了半天多。





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值