Spring MVC 拦截器使用

devtools/2025/3/26 10:00:40/

javaweb过滤器和springmvc拦截器:

拦截器的概念


拦截器使用

1/创建拦截器类,类中实现  handler执行前,执行后与渲染视图后的具体实现方法 

public class GlobalExceptionHandler implements HandlerInterceptor {// if( ! preHandler()){return;}// 在处理请求的目标 handler 方法前执行// 登录保护,权限处理等@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("request = " + request + ", response = " + response + ", handler = " + handler);System.out.println("Process01Interceptor.preHandle");// 会拦截请求,处理内容return true:则放行请求// 返回false:不放行return true;}// 在目标 handler 方法之后,handler报错不执行!// 因为已经执行完毕,所以没有拦截机制,也不会返回布尔类型// 一般是对结果进行处理,比如结果脱敏,敏感词汇检查@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("request = " + request + ", response = " + response + ", handler = " + handler + ", modelAndView = " + modelAndView);System.out.println("Process01Interceptor.postHandle");}// 渲染视图之后执行(最后),一定执行!// handler报错,会报异常@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("request = " + request + ", response = " + response + ", handler = " + handler + ", ex = " + ex);System.out.println("Process01Interceptor.afterCompletion");}
}

2/springmvcConfig配置中添加拦截器

细化拦截

默认拦截全部请求

@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new GlobalExceptionHandler());}

精准拦截地址 

路径可以设置多个,中间 , 间隔

支持精准路径,也支持模糊路径  /*    /**   /user/*    */user 等等均可 

@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new GlobalExceptionHandler()).addPathPatterns("/USER/DATA");}

排除拦截

注:排除拦截的对象应该在拦截的范围内 

@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new GlobalExceptionHandler()).addPathPatterns("/USER/*").excludePathPatterns("/USERDATA");// registry.addInterceptor(new GlobalExceptionHandler());}

多个拦截器的执行顺序

执行顺序与filter类似,优先级高的在外层,优先级低的在内层。

具体描述:

1. preHandle() 方法:SpringMVC 会把所有拦截器收集到一起,然后按照配置顺序调用各个 preHandle() 方法。
2. postHandle() 方法:SpringMVC 会把所有拦截器收集到一起,然后按照配置相反的顺序调用各个 postHandle() 方法。
3. afterCompletion() 方法:SpringMVC 会把所有拦截器收集到一起,然后按照配置相反的顺序调用各个 afterCompletion() 方法。


http://www.ppmy.cn/devtools/169264.html

相关文章

奇迹科技:蓝牙网关赋能少儿篮球教育的创新融合案例研究

一、引言 本文研究了福建奇迹运动体育科技有限公司(简称‘奇迹科技’)如何利用其创新产品体系和桂花网蓝牙网关M1500,与少儿篮球教育实现深度融合。重点分析其在提升教学效果、保障训练安全、优化个性化教学等方面的实践与成效,为…

RIP实验

RIP实验 一、实验背景 RIP协议: RIP协议(Routing Information Protocol,路由信息协议)是一种基于距离矢量的内部网关协议,即根据跳数来度量路由开销,进行路由选择。相比于其它路由协议(如OSPF、…

RWKV-7:超越Transformer的新一代RNN架构解析

引言:RNN的复兴与RWKV的突破 在Transformer主导的AI时代,循环神经网络(RNN)似乎逐渐淡出主流视野。然而,RWKV-7的发布,重新定义了RNN的可能性。这篇由RWKV团队于2025年3月18日发布的论文《RWKV-7 “Goose”…

说一下yolo的一些概念 和 自己对 置信度阈值 和图像处理模板匹配的理解

常用指标: 准确率(Accuracy) Accuracy(TP TN)/(TP TN FP FN)正确预测样本数占总样本数的比例。 精确率(Precision)Precision TP/(TP FP)在所有预测为正的样本中,真正的正样本所占的比例。 召回率(Recall)Recal TP/(TP FN)在所有实际为正的样本中,被…

基于Python的天气预报数据可视化分析系统-Flask+html

开发语言:Python框架:flaskPython版本:python3.8数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 系统登录 可视化界面 天气地图 天气分析 历史天气 用户管理 摘要 本文介绍了基于大数据…

page.json和manifest.json

UniApp pages.json pages.json 是 UniApp 项目中用于全局配置的重要文件,它定义了页面路由、窗口样式、导航栏、底部的原生 tabbar 等。 1. globalStyle 用途:设置应用默认的窗口表现。注意点: 设置的属性会被所有页面继承,但可…

笔记本电脑关不了机是怎么回事 这有解决方法

在快节奏的现代生活中,笔记本电脑已成为我们工作、学习和娱乐的得力助手。在使用电脑的过程中,笔记本电脑突然关不了机了,怎么回事?下面驱动人生就来讲一讲笔记本电脑不能正常关机的解决方法,有需要的可以来看看。 一、…

Qt动态设置样式,实现样式实时切换

文章目录 概要插件实现界面 核心代码设置样式 扩展导入样式导出样式 概要 最近需要设计界面,但是使用Qt的Designer只能看到每个界面单独的样式,程序中有些事需要主界面调用进行组合的界面,因此需要写一个插件Ui可以直接输入样式内容&#xf…