java跳转页面被拦截器拦截怎么办_SpringMVC拦截器拦截页面(坑)

问题:在使用了MVC拦截器时,访问除登录页面以外的URL时,判断是否登录,未登录的访问全部跳转至登录界面,但是在设置好时,是会判断并跳转,但是在起初,未登录访问,会先进入访问的资源页面后,立即闪退去登录页面。

但是明显这种状况是不满足权限拦截需求的,是错误操作。

原因就在于一开始在web.xml中配置了  default默认servlet    然后对 *.html 资源的放行(因为不配无法访问到html资源。)

在web.xml文件中经常看到这样的配置default,这个配置的作用是:对客户端请求的静态资源如图片、JS文件等的请求交由 默认的servlet进行处理,如下所示:

default

*.jpg

default

*.png

default

*.gif

default

*.ico

default

*.gif

default

*.js

default

*.css

如何你的DispatcherServlet拦截"*.do"这样的有后缀的URL,就不存在访问不到静态资源的问题。

如果你的DispatcherServlet拦截"/",为了实现REST风格,拦截了所有的请求,那么同时对*.js,*.jpg,*.html等静态文件的访问也就被拦截了。

即使你之后在mvc的拦截器中进行了部分资源的放行也依旧无法访问静态资源,因为你访问静态资源时DispatcherServlet会将你的请求先拦截,放行后返回浏览器的依旧是/***.html,会再次访问,然后又进DispatcherServlet,如此循环。

所以,default默认servlet的配置还是必须的。

于是问题就产生了,下面是我开始的配置(web.xml中):

default

*.html

但是,这样虽然表面上的功能都实现了,却会出现开始阐述的问题,没登录还是能有一瞬间看到被拦截的资源。

解决方式很简单,在web.xml删除上面的配置,将 该默认servlet配置 移到mvc的配置文件中配置,如下:

重新运行,问题解决,不会再进入被拦截页面后又闪跳会登录界面了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值