SpringMvc中的拦截器

拦截器

首先 他就是一个类 继承了 HandlerInterceptor接口

里面有三个方法

分别为: preHandle 、postHandle和 afterCompletion

当该拦截器拦截了某个方法 执行的顺序是:

preHandle -> 该方法 -> postHandle -> afterCompletion

该类(拦截器)要进行@Component注入

并且是在spring mvc中的配置文件去配置的 (这一点和过滤器不同 过滤器是在web.xml文件中配置的)

可以指定拦截哪些handler方法

默认配置是拦截所有的方法

也可以选择某些具体的方法

其中 在拦截器中 第一个方法 如果是return true;

方法目标正常被执行

如果是return false

该方法就不会执行 并且postHandle和 afterCompletion 也不会执行

此外 也可以有多个拦截器

执行顺序看配置文件中的配置先后顺序

比如有两个拦截器 分别为:拦截器1 拦截器2 且 在这两个拦截器中 第一个方法 均是return true;

那么执行顺序为 :

拦截器1的preHandle -> 拦截器2的preHandle -> 执行方法 拦截器2的 postHandle->

拦截器1的 postHandle -> 拦截器2的afterCompletion-> 拦截器1的afterCompletion

若其中 拦截器2的preHandle 返回return false 到此为止 不会执行handler方法 跳过 直接继续执行拦截器1的afterCompletion

若其中 拦截器1的preHandle 返回return false 到此为止 不会执行handler方法 也不会有任何后续

一旦出现return false 执行方法直接放弃执行

相关推荐
Derek_Smart23 分钟前
从一次 OOM 事故说起:打造生产级的 JVM 健康检查组件
java·jvm·spring boot
NE_STOP1 小时前
MyBatis-mybatis入门与增删改查
java
孟陬5 小时前
国外技术周刊 #1:Paul Graham 重新分享最受欢迎的文章《创作者的品味》、本周被划线最多 YouTube《如何在 19 分钟内学会 AI》、为何我不
java·前端·后端
想用offer打牌5 小时前
一站式了解四种限流算法
java·后端·go
华仔啊5 小时前
Java 开发千万别给布尔变量加 is 前缀!很容易背锅
java
也些宝6 小时前
Java单例模式:饿汉、懒汉、DCL三种实现及最佳实践
java
Nyarlathotep01137 小时前
SpringBoot Starter的用法以及原理
java·spring boot
wuwen57 小时前
WebFlux + Lettuce Reactive 中 SkyWalking 链路上下文丢失的修复实践
java
SimonKing7 小时前
GitHub 10万星的OpenCode,正在悄悄改变我们的工作流
java·后端·程序员