springboot中,不存在的url会不会被Interceptor拦截?
我这边两个项目,都是springboot的.版本都是2.1.3.RELEASE
开发工具都是idea 2017.3,构建工具都是gradle 4.6
- A项目只提供接口,项目中没有页面.
返回一个不存在的url. 比如 /mng/abc
请求会走拦截器
走到验证token的地方会抛出异常. 但是这个抛出的异常无法在同一异常拦截处理器中被拦截到.(但是一个正确的url地址会被拦截到)
下图是访问一个不存在的url地址
下图是访问一个存在的url地址
- B项目有提供页面,拦截器也是相同的配置. 访问一个不存在的url地址就直接返回404. 不会走拦截器.访问存在的地址就会走拦截器.
下图访问一个不存在的地址
下图是访问一个存在的地址
那么springboot中, 一个不存在的url到底什么情况下会走拦截器,什么情况不会走拦截器?
还有项目A中的情况, 一个不存在的url走拦截后,抛出了一个自定义异常, 要如何才能捕获?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
springboot默认有个
BasicErrorController
继承AbstractErrorController
实现全局的异常处理。BasicErrorController
如果不存在的页面会跳转到error
的视图中,可以在项目中新建当前视图例如error.html
会执行啊,只要你输入的url符合你定义的拦截器的拦截规则,比如拦截器要拦截
user/info/
,你输入user/info/aa
,就会被拦截;具体流程是:
dispatcherServlet
的doDispatch()
方法interceptor