行业资讯 2025年08月6日
0 收藏 0 点赞 122 浏览 1645 个字
摘要 :

文章目录 1.什么是拦截器 2.拦截器可以做什么 3.springMVC拦截器的实现一般有两种方式 4.HandlerInterceptor接口 5.自定义拦截器 1.什么是拦截器 拦截器通常一般指的是……




  • 1.什么是拦截器
  • 2.拦截器可以做什么
  • 3.springMVC拦截器的实现一般有两种方式
  • 4.HandlerInterceptor接口
  • 5.自定义拦截器

1.什么是拦截器

拦截器通常一般指的是通过拦截从浏览器发往服务器的一些请求来完成某些功能的一段程序代码
一般在一个请求发生之前,发生时,发生后我们都可以对请求进行拦截

2.拦截器可以做什么

拦截器可以用于权限验证、解决乱码、操作日志记录、性能监控、异常处理等

3.springMVC拦截器的实现一般有两种方式

第一种方式:实现HandlerInterceptor 接口

第二种方式:继承实现了HandlerInterceptor接口的类,比如Spring已经提供的实现了HandlerInterceptor接口的抽象类HandlerInterceptorAdapter
一般我们使用第一种方式

4.HandlerInterceptor接口

HandlerInterceptor 接口中定义了三个方法,我们就是通过这三个方法来对用户的请求进行拦截处理的。

preHandle(): 这个方法在业务处理器处理请求之前被调用,SpringMVC 中的Interceptor 是链式的调用的,在一个应用中或者说是在一个请求中可以同时存在多个Interceptor 。每个Interceptor 的调用会依据它的声明顺序依次执行,而且最先执行的都是Interceptor 中的preHandle 方法,所以可以在这个方法中进行一些前置初始化操作或者是对当前请求的一个预处理,也可以在这个方法中进行一些判断来决定请求是否要继续进行下去。该方法的返回值是布尔值Boolean 类型的,当它返回为false 时,表示请求结束,后续的Interceptor 和Controller 都不会再执行;当返回值为true 时就会继续调用下一个Interceptor 的preHandle 方法,如果已经是最后一个Interceptor 的时候就会是调用当前请求的Controller 方法。

postHandle():这个方法在当前请求进行处理之后,也就是Controller 方法调用之后执行,但是它会在DispatcherServlet 进行视图返回渲染之前被调用,所以我们可以在这个方法中对Controller 处理之后的ModelAndView 对象进行操作。postHandle 方法被调用的方向跟preHandle 是相反的,也就是说先声明的Interceptor 的postHandle 方法反而会后执行。

afterCompletion():该方法也是需要当前对应的Interceptor 的preHandle 方法的返回值为true 时才会执行。顾名思义,该方法将在整个请求结束之后,也就是在DispatcherServlet 渲染了对应的视图之后执行。这个方法的主要作用是用于进行资源清理工作的。
自定义拦截器——SpringMVC框架系列教程(12)

5.自定义拦截器

a)自定义拦截器类实现HandlerInterceptor接口
自定义拦截器——SpringMVC框架系列教程(12)
b)在springmvc.xml中配置自定义的拦截器
自定义拦截器——SpringMVC框架系列教程(12)

注意:这样配置默认拦截全部请求

c)controller方法
自定义拦截器——SpringMVC框架系列教程(12)
d)测试
自定义拦截器——SpringMVC框架系列教程(12)
e)如果只拦截部分该如何配置?

<!-- 配置自定义拦截器:默认拦截全部请求 -->
<mvc:interceptors>
    <mvc:interceptor>
        <!-- 配置需要拦截的请求,基于ant风格  /** 表示拦截所有-->
        <mvc:mapping path="/**"/>
        <!-- 配置不需要拦截的请求 -->
        <mvc:exclude-mapping path="/download"/>
        <!-- 注意 bean必须放里面 -->
        <bean id="myInterceptor" class="com.pzy.interceptor.MyInterceptor"></bean>
    </mvc:interceptor>
</mvc:interceptors>

f)拦截器链
新增拦截器MyInterceptor2
自定义拦截器——SpringMVC框架系列教程(12)
配置拦截器MyInterceptor2
自定义拦截器——SpringMVC框架系列教程(12)
测试:
自定义拦截器——SpringMVC框架系列教程(12)

注意代码执行顺序

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/7682.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号