springboot中,不存在的url会不会被Interceptor拦截?

发布于 2022-09-11 20:36:24 字数 1050 浏览 14 评论 0

我这边两个项目,都是springboot的.版本都是2.1.3.RELEASE
开发工具都是idea 2017.3,构建工具都是gradle 4.6

  1. A项目只提供接口,项目中没有页面.

clipboard.png

返回一个不存在的url. 比如 /mng/abc
请求会走拦截器

clipboard.png
走到验证token的地方会抛出异常. 但是这个抛出的异常无法在同一异常拦截处理器中被拦截到.(但是一个正确的url地址会被拦截到)

下图是访问一个不存在的url地址

clipboard.png

下图是访问一个存在的url地址

clipboard.png

  1. B项目有提供页面,拦截器也是相同的配置. 访问一个不存在的url地址就直接返回404. 不会走拦截器.访问存在的地址就会走拦截器.

下图访问一个不存在的地址

clipboard.png

下图是访问一个存在的地址

clipboard.png

那么springboot中, 一个不存在的url到底什么情况下会走拦截器,什么情况不会走拦截器?
还有项目A中的情况, 一个不存在的url走拦截后,抛出了一个自定义异常, 要如何才能捕获?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

妖妓 2022-09-18 20:36:24

springboot默认有个BasicErrorController继承AbstractErrorController实现全局的异常处理。
BasicErrorController如果不存在的页面会跳转到error的视图中,可以在项目中新建当前视图例如error.html

旧时光的容颜 2022-09-18 20:36:24

会执行啊,只要你输入的url符合你定义的拦截器的拦截规则,比如拦截器要拦截user/info/,你输入user/info/aa,就会被拦截;
具体流程是:

  1. 先执行dispatcherServletdoDispatch()方法
  2. 找到对应的mappedHandler
  3. 根据请求,去调用拦截器interceptor
  4. 拦截器通过执行handlerAdapter处理请求,没有对应的view时返回404
  5. 没通过拦截器校验则直接error
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文