SpringMvc拦截器preHandle,postHandle,afterCompletion

article/2025/10/12 11:18:40

目录

1.拦截器介绍

2.SpringMVC执行流程( 内含拦截器执行流程 ) 

3.拦截器类

4.拦截器preHandle,postHandle,afterCompletion

preHandle

postHnadle 

afterCompletion


1.拦截器介绍

SpringMVC中的Interceptor拦截器是非常重要的,他的作用就是拦截指定用户的请求,并进行相应的预处理和后处理,他拦截的时间点在(处理器映射器根据用户提交的请求映射出了所要执行的处理器类,并且也找到了要执行该处理器类的处理器适配器,在处理器适配器执行该处理器类之前)。当然,在处理器映射器映射出所要执行的处理类时,已经将拦截器与处理器组合成一个处理器执行链,并返还给了中央调度器。

2.SpringMVC执行流程( 内含拦截器执行流程 ) 

 3.拦截器类

package com.liuhaiyang.handler;import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.Date;/*** 拦截器*/
public class Myhandler implements HandlerInterceptor {/***  preHandle:预先处理请求的方法 。相当于总开关 参数:Object handler:被拦截的控制器对象(Mycontroller)*      返回值:Boolean   当为真时,请求正确,可以被Controller处理,程序正常执行。*          当为假时,请求不能被处理,控制器方法不会执行。请求到此截止。*     特点:1.预处理方法的执行时间:在控制器方法之前先执行的. 2.可以对请求做处理,可以做登陆检查,全限的判断,统计数据等等*     3.决定请求是否被执行*/@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handler) throws Exception {System.out.println("=====MyHandler拦截器的preHandler====");// request.getRequestDispatcher("/tips.jsp").forward(request,response);return true;}/***  postHandler:后处理方法 参数:Object handler:被拦截的控制器对象(MyController)*          ModelAndView mv:控制器方法的返回值(请求的执行结果)*     特点:1.在控制器方法之后执行的。  2.能获取到控制器方法的执行结果。可以修改原来的执行结果*     可以修改数据,也可以修改视图。   3.可以做对请求的二次处理*/@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response,Object handler, ModelAndView mv) throws Exception {System.out.println("=====MyHandler拦截器的postHandler====");}}/***  afterCompletion:最后执行的方法  参数:Object handler:被拦截的控制器对象(MyController) Exception ex:异常对象*  特点:1.在请求处理完成后执行的,请求处理完成的标志 是视图处理完成,对试图执行forward操作后*       2.可以做程序最后要做的工作,释放内存,清理临时变量*       3.方法的执行条件:1)当前的拦截器它的preHandler方法必须执行。 2)preHandler必须返回true*/@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("=====MyHandler拦截器的afterCompletion====");}
}

4.拦截器preHandle,postHandle,afterCompletion

preHandle

调用时间:Controller方法处理之前

执行顺序:链式Intercepter情况下,Intercepter按照声明的顺序一个接一个执行

若返回false,则中断执行,注意:不会进入afterCompletion

postHnadle 

调用前提:preHandle返回true

调用时间:Controller方法处理完之后,DispatcherServlet进行视图的渲染之前,也就是说在这个方法中你可以对ModelAndView进行操作。

执行顺序:链式Intercepter情况下,Intercepter按照声明的顺序倒着执行。

备注:postHandle虽然post打头,但post、get方法都能处理

 afterCompletion

调用前提:preHandle返回true

调用时间:DispatcherServlet进行视图的渲染之后

多用于清理资源


http://chatgpt.dhexx.cn/article/JO9saMLo.shtml

相关文章

Interceptor的基本介绍和使用preHandle、postHandle与afterCompletion

目录 preHandlepostHandleafterCompletion项目测试代码项目测试 preHandle 调用时间:Controller方法处理之前 执行顺序:链式Intercepter情况下,Intercepter按照声明的顺序一个接一个执行 若返回false,则中断执行,注…

preHandle执行多次问题

首先说下我的问题吧,我是swagger测试多个接口,其他接口没有啥问题,但是就是查询第三方系统的接口一直请求多次,最后debug看了下第二次的请求路径,卧槽,这个不是别的系统的路径吗,瞬间明白了。 …

java 中prehandle,Spring MVC中拦截器HandlerInterceptorAdapter中的preHandle方法

拦截器:顾名思义,就是对请求进行拦截,做一些预处理、后处理或返回处理的操作 Spring MVC中使用拦截器的方法,继承HandlerInterceptorAdapter类,并根据需求实现其中的preHandle方法(预处理)、postHandle方法(返回处理)&…

HandlerInterceptor的preHandle、postHandle、afterCompletion方法的作用

public class MyHandlerInterceptor implements HandlerInterceptor { (1) preHandle方法是进行处理器拦截用的,顾名思义,该方法将在Controller处理之前进行调用。 SpringMVC中的Interceptor拦截器是链式的,可以同时…

SpringBoot——拦截器

符合条件的请求被放行,不符合条件的请求访问不到所请求的东西。 1、步骤 (以登陆拦截器为例,只有用户登录了才能访问某页面): 1、编写拦截器,实现HandlerInterc此接口有三个方法 , preHandle…

拦截器的配置

文章目录 拦截器简介实现一个拦截器拦截器的配置多个拦截器时的执行顺序 拦截器简介 过滤器可以拦截请求,拦截器也能拦截请求,那过滤器和拦截器有啥区别?看下面这张图就明白了。 拦截器有三个方法,分别是 preHandle&#xff0c…

springmvc拦截器

实现拦截器步骤 步骤一 声明拦截器类(实现 handlerInterceptor接口) 1.主要看prehandle方法的返回值确定是否放行,如果是true,表示放行,会执行该拦截器的prehandle方法, 如果有多个拦截器,…

DateUtils时间类

1、测试 package test.utils.date; import java.text.ParseException; import java.util.Date; import org.apache.commons.lang.time.DateUtils; public class Test {public static void main(String[] args) {int amount 2;Date date new Date();// System.out.printf(&qu…

dateutil模块

安装:终端运行 pip install python-dateutil python第三方模块dateutil模块主要使用以下,1, parse,2,rrule, 3,relativedelta。 parse把字符串格式的时间转化为datetime.datetime格式时间。util是计算时间差…

封装工具类DBUtils、DateUtils详解

三、封装工具类DBUtils、DateUtils 把以下会重复写的代码封装: 3.1 封装货期连接、释放资源两个方法 提供public static Connection getConnection(){}方法。提供public static void closeAll(Connection conn,Statement sm,ResultSet rs){}方法。 3.2 跨平台方…

常用DateUtil

导语 最近项目中用到一些时间的操作,当然我们可以选择lang3,或者其他三方的jar,来进行操作,小编将项目中用到的一些用于的时间工具整理了一下,给大家参考一下! 先给大家展示一下使用及效果 使用 GetMapping(value &…

Android个人学习笔记之实战时间的获取相关-DateUtils

前言:在近期的项目编写过程中,看到了时间工具类DateUtil,虽然大致的用法已经清楚,但是对于这个类还是有一定的不解,很多类型并不知道实际的效果如何,所以就结合Android的API,实战来测试不同的效…

什么是token和使用的意义

一、什么是token token (计算机术语) 在计算机身份认证中是令牌(临时)的意思,在词法分析中是标记的意思。一般作为邀请、登录系统使用。 二、token的意义 令牌:代表执行某些操作的权利和对象,访…

Token

Token笔记 是什么SessionCookietoken 为什么Session和Cookie 区别:token和Session区别:Session缺陷token相比而言: 怎么做token工作流程:token结构: 是什么 web应用程序是使用HTTP协议来传送数据的。而HTTP是无状态的…

Java 中 Token 是什么,有哪些用途

简介 Token 是一种身份验证机制,通常由服务器生成并返回给客户端,客户端在后续的请求中携带 Token,以证明自己的身份。在 Java 中,Token 的应用场景非常广泛,例如用户登录、API 认证、OAuth 授权等等。 在用户登录的…

Token的作用及原理

讲到Token的作用和原理,网上有很多相关的技术文章,通过搜集整理并加入自己的理解体会,做一个总结整理,希望可以帮助到更多有需要的人。 1、token作用及原理 Token,即令牌,是服务器产生的,具有…

Token和Jwt的区别

Token基本原理 Token(就是加密的字符串,使用MD5,等不可逆加密算法,一定要保证唯一性) 客户端使用用户名跟密码请求登录 服务端收到请求,去验证用户名与密码 验证成功,服务端会签发一个Token保存到(Session,redis,mysql…)中,然后再把这个 …

什么是token及怎样生成token

什么是token Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。 基…

token是什么?

token的意思是令牌,是服务端生成的一串字符串,作为客户端进行请求的一个标识。 当用户第一次登录后,服务器生成一个token,并将token返回给客户端,之后客户端只需要带上这个token前来请求数据即可,无需再带…

Token是什么 Token登录认证

Token 是在服务端产生的一串字符串。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位。如果这个 Token 在服务端持久化(比如存入数据库&a…