当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. 易宝典文章——如何在Exchange Server 2010 SP1下将用户邮箱导出到PST中
  2. 算法笔记-图--bfs
  3. 计算机网络最提出的优点是什么,2013年计算机一级B考试模拟试题十八及答案解析...
  4. Python 3.3.2 中文版
  5. ASP.NET Core Windows 环境配置 - ASP.NET Core 基础教程 - 简单教程,简单编程
  6. 求职华为,被问观察者模式,从没有这种体验!!!
  7. YbtOJ-交换游戏【树链剖分,线段树合并】
  8. QPW 系统管理后台用户表(tm_user_info)
  9. 码农30多岁,要被辞退的时候 怎么办?
  10. Python 关键词触发的魔法方法
  11. ASP.NET-第二天-加强课程
  12. tensor索引[..., 0]
  13. 逐步完善自己的3D引擎
  14. linux centos lamp,Linux centos lamp之Apache
  15. Loadrunner 去缓存
  16. C 语言编码规范(MISRA-C-:2004)
  17. kasp技术原理_KASP基因分型
  18. poi操作PPT读取模板流,生成新PPT文件
  19. K-S检验两样本分布是否相同
  20. Peekaboo——项目系统设计与数据库设计

热门文章

  1. 二进制四进制八进制十六进制之间转换关系及浅谈文字在计算机中表示
  2. 2000-2020年上市公司常用控制变量数据整理
  3. 金蝶K3生产数据管理模块术语表
  4. 深入理解硬盘原理,Mysql索引底层数据结构与算法的来龙去脉(多图)
  5. 什么是固态功率放大器?射频固态功率放大器?
  6. bind server.c
  7. Android蓝牙打印机功能开发完整Demo
  8. APP自动化遇到问题总结-持续更新
  9. js模封装仿重力场方法
  10. android 最好的gtd软件,Windows 上的高颜值 GTD 应用,这可能是最棒的一款了:MyerList...