SpringMVC拦截器和拦截器链
创始人
2025-06-01 14:12:21
0

文章目录

      • 1.拦截器概述
      • 2.拦截器和过滤器的区别
      • 3.拦截器开发
      • 4.拦截器的执行流程
      • 5.拦截器链配置
          • 1.配置多个拦截器
          • 2.拦截器链的执行

1.拦截器概述

  1. 拦截器是一种动态拦截方法调用的机制,在 SpringMVC 中动态拦截控制器方法的执行
  2. 作用:
    • 在指定的方法调用前后执行预先设定的代码
    • 阻止原始方法的执行

2.拦截器和过滤器的区别

  • 归属不同:Filter 属于 Servlet 技术,Interceptor属于 SpringMVC 技术。
  • 拦截内容不同:Filter 对所有访问进行增强,Interceptor 仅对 SpringMVC 的访问进行增强。

3.拦截器开发

  1. 创建拦截器类,实现 HandlerInterceptor 接口
@Component
public class ProjectInterceptorr implements HandlerInterceptor {//原始方法调用前执行的内容@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("preHandle......");return true;}//原始方法调用后执行的内容@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("postHandle......");}//原始方法调用完成后执行的内容@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("afterCompletion......");}
}
  1. 配置拦截器类
@Configuration
public class SpringSupport extends WebMvcConfigurationSupport {@Autowiredprivate ProjectInterceptorr projectInterceptorr;//拦截器@Overrideprotected void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(projectInterceptorr).addPathPatterns("/books","/books/*");}
}
  1. SpringMVC 包扫描
@Configuration
@ComponentScan({"com.my.controller","com.my.config"})
@EnableWebMvc
public class SpringMvcConfig {
}

4.拦截器的执行流程

在这里插入图片描述

5.拦截器链配置

1.配置多个拦截器
  1. 创建拦截器类
@Component
public class ProjectInterceptorr2 implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("preHandle2......");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("postHandle2......");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("afterCompletion2......");}
}
  1. 配置拦截器类
@Configuration
public class SpringSupport extends WebMvcConfigurationSupport {@Autowiredprivate ProjectInterceptorr projectInterceptorr;@Autowiredprivate ProjectInterceptorr2 projectInterceptorr2;//拦截器@Overrideprotected void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(projectInterceptorr).addPathPatterns("/books","/books/*");registry.addInterceptor(projectInterceptorr2).addPathPatterns("/books","/books/*");}
}
2.拦截器链的执行
  • 拦截器的执行顺序和配置顺序有关,先进先出。
  • 拦截器链的运行顺序参照拦截器添加顺序为准
  • 当拦截器链出现对原始处理器的拦截,后面的拦截器终止运行
  • 当拦截器运行中断,仅运行配置走在前面的拦截器的 afterCompletion 操作

相关内容

热门资讯

iPhone手机怎么玩安卓系统... 你有没有想过,你的iPhone手机竟然也能玩安卓系统?没错,就是那个一直以来让你觉得遥不可及的安卓世...
平板删安卓系统更新不了,原因及... 最近是不是你也遇到了这样的烦恼?平板电脑上的安卓系统更新不了,是不是让你头疼得要命?别急,今天就来给...
苹果组装机安卓系统卡,卡顿背后... 你有没有发现,最近用苹果手机的时候,有时候系统有点卡呢?这可真是让人头疼啊!你知道吗,其实这背后还有...
安卓系统原生浏览器,功能与体验... 你有没有发现,每次打开手机,那个小小的浏览器窗口总是默默无闻地在那里,陪你浏览网页、搜索信息、看视频...
安卓机如何上苹果系统,跨平台体... 你是不是也和我一样,对安卓机和苹果系统之间的切换充满了好奇?想象你的安卓手机里装满了各种应用,而苹果...
安卓导入系统证书失败,原因分析... 最近在使用安卓手机的时候,你是不是也遇到了一个让人头疼的问题——导入系统证书失败?别急,今天就来给你...
安卓原生系统有哪些手机,盘点搭... 你有没有想过,为什么有些手机用起来就是那么流畅,那么顺心呢?这背后可大有学问哦!今天,就让我带你一起...
安卓系统关机了怎么定位,安卓系... 手机突然关机了,是不是有点慌张呢?别担心,今天就来教你一招,让你的安卓手机即使关机了,也能轻松定位到...
安卓系统游戏加速器,畅享无延迟... 你有没有发现,手机游戏越来越好玩了?不过,有时候游戏体验可能并不那么顺畅,是不是因为手机性能不够强大...
安卓4系统天气功能,尽在掌握 安卓4系统天气功能大揭秘在当今这个数字化的世界里,手机已经不仅仅是一个通信工具,它更是一个集成了各种...
安卓系统如何玩碧蓝幻想,攻略与... 你有没有想过,在安卓系统上玩《碧蓝幻想》竟然可以这么酷炫?没错,就是那个让你沉迷其中的二次元大作!今...
安卓系统搜不到图朵,图朵生成之... 最近是不是你也遇到了这样的烦恼?手机里明明有那么多美美的图片,但是用安卓系统搜索的时候,却怎么也找不...
魁族8刷安卓系统,系统升级后的... 哇,你知道吗?最近在安卓系统圈子里,有一个话题可是引起了不小的轰动,那就是魁族8刷安卓系统。你是不是...
微信正版安装安卓系统,畅享沟通... 你有没有想过,你的微信是不是正版安装的安卓系统呢?这可不是一个小问题哦,它关系到你的微信使用体验和隐...
电视能刷安卓系统吗,电视也能刷... 电视能刷安卓系统吗?揭秘智能电视的无限可能想象你家的电视不再只是用来观看节目的工具,而是变成了一个功...
安卓系统开通通知功能,畅享智能... 你知道吗?最近安卓系统更新后,新增了一个超级实用的功能——开通通知功能!这可是个大喜事,让咱们的生活...
苹果系统安卓爱思助手,系统兼容... 你有没有发现,手机的世界里,苹果系统和安卓系统就像是一对欢喜冤家,总是各有各的粉丝,各有各的拥趸。而...
安卓系统占用很大内存,揭秘内存... 手机里的安卓系统是不是让你感觉内存不够用,就像你的房间堆满了杂物,总是找不到地方放新东西?别急,今天...
安卓系统p30,安卓系统下的摄... 你有没有发现,最近安卓系统P30在手机圈里可是火得一塌糊涂呢!这不,我就来给你好好扒一扒这款手机的那...
siri被安卓系统进入了,智能... 你知道吗?最近科技圈可是炸开了锅,因为一个大家伙——Siri,竟然悄悄地溜进了安卓系统!这可不是什么...