目录
目的
实现过程
1、创建拦截器
2、注册拦截器
完整代码
目的
在Springboot项目中创建拦截器,在进入Controller层之前拦截请求,可对拦截到的请求内容做响应处理,如:校验请求参数、验证证书等操作;
实现过程
1、创建拦截器
首先自定义创建一个类,然后使用该类实现HandlerInterceptor接口并实现接口中的preHandle、postHandle、afterCompletion方法;结构如下图所示:
HandlerInterceptor接口中的方法作用和使用场景:
-
preHandle() 方法:
- 作用:在请求处理之前执行的方法。可以进行一些前置处理逻辑,例如权限验证、日志记录等。
- 使用场景:适用于需要在请求处理之前进行拦截和处理的场景,例如身份验证、请求参数校验等。
-
postHandle() 方法:
- 作用:在请求处理之后执行的方法。可以对处理结果进行一些后置处理,例如添加返回结果信息、记录请求执行时间等。
- 使用场景:适用于需要在请求处理之后进行拦截和处理的场景,例如添加公共返回信息、请求结果统计等。
-
afterCompletion() 方法:
- 作用:在请求完成后执行的方法。无论请求成功与否,都会执行该方法。可以进行资源释放和清理操作。
- 使用场景:适用于需要在请求完成后进行资源释放和清理的场景,例如关闭数据库连接、释放文件资源等。
- 鉴权拦截:在 preHandle() 方法中进行用户身份验证,根据验证结果决定是否放行请求。
- 日志记录:在 postHandle() 方法中记录请求的处理结果和执行时间,用于统计和分析。
- 资源释放:在 afterCompletion() 方法中释放数据库连接、关闭文件资源,确保资源的正确释放。
2、注册拦截器
自定义创建一个类,然后使用该类实现WebMvcConfigurer接口并实现接口中的addInterceptors防范;结构如下图所示:
addInterceptor():将需要注册的拦截器放在该方法中;
addPathPatterns():将需要被拦截的请求配置在该方法中,存在多个时可使用逗号间隔;
excludePathPatterns():将需要放行的请求配置在该方法中,存在多个时可使用逗号间隔;
完整代码
可以参考以下示例的完整代码Springboot中拦截GET请求获取请求参数验证合法性https://blog.csdn.net/weixin_45151960/article/details/132184917?spm=1001.2014.3001.5501