当SpringMVC中一个目标方法里有多个拦截器时,例如有A和B拦截器,将执行图中流程。

如果在A拦截器中,preHandle()方法中返回了false,那么流程图将会变化:

如果在B拦截器中,preHandle()方法中返回false,那么流程图将是这样:

相关代码:

@Component
public class MyInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("A preHandle");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("A postHandle");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("A afterCompletion");}
}
@Component
public class BInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("B preHandle");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("B postHandle");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("B afterCompletion");}
}

相关知识(废话)↓

Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。
要使用Spring MVC中的拦截器,就需要对拦截器类进行定义和配置。通常拦截器类可以通过两种方式来定义。
1.通过实现HandlerInterceptor接口,或继承HandlerInterceptor接口的实现类(如HandlerInterceptorAdapter)来定义。

2.通过实现WebRequestInterceptor接口,或继承WebRequestInterceptor接口的实现类来定义。

  • preHandle() 方法:该方法会在控制器方法前执行,其返回值表示是否中断后续操作。当其返回值为true时,表示继续向下执行;
    当其返回值为false时,会中断后续的所有操作(包括调用下一个拦截器和控制器类中的方法执行等)。

  • postHandle()方法:该方法会在控制器方法调用之后,且解析视图之前执行。可以通过此方法对请求域中的模型和视图做出进一步的修改。

  • afterCompletion()方法:该方法会在整个请求完成,即视图渲染结束之后执行。可以通过此方法实现一些资源清理、记录日志信息等工作。

相关知识(废话)↑

如有错误欢迎指出。

---内容仅供记载

---2022-08-02

SpringMVC多个拦截器流程简图相关推荐

  1. (转)SpringMVC学习(十二)——SpringMVC中的拦截器

    http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...

  2. java day62【 响应数据和结果视图 、 SpringMVC 实现文件上传 、 SpringMVC 中的异常处理 、 SpringMVC 中的拦截器 】...

    第1章 响应数据和结果视图 1.1返回值分类 1.1.1 字符串 1.1.2 void 1.1.3 ModelAndView 1.2转发和重定向 1.2.1 forward 转发 1.2.2 Redi ...

  3. SpringMVC (注解、拦截器、json、Ajax)

    SpringMVC 1.回顾MVC 1.1 什么是mvc MVC是模型(Model).视图(View).控制器(Controller)的简写,是一种软件设计规范. 是将业务逻辑.数据.显示分离的方法来 ...

  4. SpringMVC中的拦截器

    SpringMVC中的拦截器 拦截器的作用 Spring MVC 的处理器拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理. 用户可以自己定义一些拦截器来实现 ...

  5. Springmvc中的拦截器interceptor及与过滤器filter的区别

    一.Springmvc中的拦截器概述及与过滤器filter的区别 1).Springmvc中的拦截器interceptor用于对控制器controller进行预处理和后处理的技术; 2).可以定义拦截 ...

  6. SpringMVC中的拦截器、过滤器的区别、处理异常

    SpringMVC中的拦截器.过滤器的区别.处理异常 参考文章: (1)SpringMVC中的拦截器.过滤器的区别.处理异常 (2)https://www.cnblogs.com/ahaijava/p ...

  7. 在SpringMVC中使用拦截器(interceptor)拦截CSRF***

    关于什么是CSRF我这里就不多说了,以前转载的一篇文章(PS:https://www.zifangsky.cn/358.html)已经说得很清楚了.这里只是简单介绍如何在SpringMVC中使用拦截器 ...

  8. 【SpringMVC笔记】拦截器 + 文件上传下载

    拦截器 + 文件上传下载 拦截器(interceptor) 自定义拦截器 验证用户是否登录 (认证用户) 没有拦截器 配置拦截器 文件的上传 文件输出流进行文件上传 file.Transto 进行文件 ...

  9. 【SpringMVC学习11】SpringMVC中的拦截器

    Springmvc的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理.本文主要总结一下springmvc中拦截器是如何定义的,以及测试拦截器的执行情况和使用 ...

最新文章

  1. 华为合作oppovivo小米鸿蒙,华为鸿蒙成功的关键:要让小米、OPPO、VIVO都用上鸿蒙...
  2. 99. 恢复二叉搜索树
  3. 我是一个内向的人,也是一个不善交际的人
  4. 【洛谷P3106】[USACO14OPEN]GPS的决斗Dueling GPS's
  5. 数据访问函数库 for ado.net2.0
  6. Redis源码分析(一)--Redis结构解析
  7. 洛谷P2709 小B的询问
  8. java向hdfs提交命令_Java语言操作HDFS常用命令测试代码
  9. 花店橱窗布置问题(FLOWER)
  10. 我的世界f服务器自定义皮肤,我的世界服务器皮肤指令
  11. 靠天收粮江西 国稻种芯·中国水稻节:锐变高标准农田示范省
  12. quot 云计算 quot 是计算机,云计算是什么意思?
  13. 怎么把浏览器改成开发者模式_小米手表怎么玩?Wear OS初体验
  14. 计算机开机界面用户如何删除,电脑开机用户去掉登录界面方法
  15. DNS分类与区别-权威DNS、递归DNS、转发DNS
  16. 小程序源码:笑话段子手-多玩法安装简单
  17. 程序员做笔记的利器:MarkDown软件
  18. 保险费率软件测试题目,软件测试保险等价类法测试用例
  19. Qt中的unicode转换
  20. MT6169 RF System Datasheet资料介绍

热门文章

  1. 循环双链表的p所指的结点之前插入q所指结点的操作为()
  2. Excel 中如何根据单元格内容删除行
  3. 埃夫特机器人回零偏差太大_埃夫特指令
  4. 电商营销策略介绍,电商营销手段有哪些
  5. 【苹果相册】苹果推从新建的私钥CSR文件Profile还分为开发和分发
  6. 微信小程序实现3D轮播图
  7. vue路由第三篇-导航守卫、路由元信息、动态路由
  8. FPGA数字时钟系统-设计教程
  9. 马云爸爸成立快一年的达摩院,究竟在做什么?
  10. python饮料购买_Python实现的一个自动售饮料程序代码分享