文档章节

HandlerInterceptorAdapter的简介

刘太刚
 刘太刚
发布于 2017/09/08 20:07
字数 335
阅读 39
收藏 1

        HandlerInterceptorAdapter中有三个方法:方别是preHandle,postHandle, afteCompletion。当我们需要使用的HandlerInterceptorAdapter实现相应的功能的时候(配置一个拦截器),就需要继承HandlerInterceptorAdapter,并实现其中相应的方法。现在就来介绍一下HandlerInterceptorAdapter三方法。

一、三个方法的执行顺序

        请看下图:

当执行以上代码时候,会看到,三个方法的执行顺序为:preHandle-->postHanle-->afterCompletion。如下图:

具体来说,preHandle会在请求到达控制器前被调用;postHandle会在请求完成后,在视图被渲染前被调用;afterCompletion在视图被渲染后被调用。

        值得注意的是,当preHandle中的返回值为false时(默认情况下为true),将不会调用postHandle和afterCompletion。

二、三个方法中的参数

        1、三个方法中三个共同的参数

HttpServletRequest request, HttpServletResponse response, Object handler

HttpServletRequest request——包含所有请求的内容;

HttpServletResponse response——包含所有响应的内容;

Object handler——表示被拦截的请求的目标对象。

        2、postHandle中的特殊参数

ModelAndView modelAndView

可以通过ModelAndView的参数来修改显示的视图,或修改发往视图的方法。

        3、afterCompletion中的特殊参数

Exception ex

当ex!=null时,表示在请求的过程中发生了错误,ex会携带错误相关的信息。

 

 

 

 

 

 

        

© 著作权归作者所有

共有 人打赏支持
上一篇: java的自定义注解
下一篇: Java的注解
刘太刚
粉丝 8
博文 38
码字总数 31199
作品 0
贵阳
程序员
私信 提问
SpringBoot之Interceptor拦截器

前言:之前跨域有用过,拦截器是拦截通过SpringMvc的请求,中间进行一些逻辑校验,比如权限控制。类似于Servlet的Filter 自定义拦截器的话 可以通过实现HandlerInterceptor 或者继承Handler...

王念博客
2016/10/14
989
0
springmvc 拦截器中ModelAndView为null

首先在controller方法是这样的: public void methodName(ModelMap model, ...............){ model.put(XXX,XXX); } 有两种情况: 1.controller方法参数中带HttpServletResponse response时,......

Liebert
2015/09/06
3.7K
2
spring中HttpServletRequestWrapper装饰者模式是如何理解的?

这是我找的一段实现装饰模式的demo 对HttpServletRequestWrapper这里的装饰模式有些疑问: HttpServletRequestWrapper是对应上面例子中的BufferedFontProvider? HttpServletRequest是对应例...

superchris
2015/12/10
2.1K
5
spring 事务 ,hibernate 缓存问题?

我有两个实体A,B, A实体在action里面改变了属性的值,没有update , 然后用spring 的拦截器HandlerInterceptorAdapter 下面的afterCompletion()方法 保存了B实体,但是最后程序也更新了A实体...

ENZO_zhao
2013/08/15
386
3
springmvc 实现注解式权限验证

对大部分系统来说都需要权限管理来决定不同用户可以看到哪些内容,那么如何在Spring MVC中实现权限验证呢?当然我们可以继续使用servlet中的过滤器Filter来实现。但借助于Spring MVC中的act...

岸芷汀兰
2015/05/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Coding and Paper Letter(四十五)

资源整理。 1 Coding: 1.Python库gempy,一种基于Python的开源三维结构地质建模软件,它允许从界面和方向数据隐式(即自动)创建复杂的地质模型。 它还支持随机建模以解决参数和模型的不确定...

胖胖雕
23分钟前
0
0
golang 声明一个指定长度的数组,用于后续添加

很多时候我们需要声明一个指定长度的数组,用于后续添加.在使用go的时候要注意,下面的第一个例子会有报错 "non-constant array bound",应该使用第二个例子. Length 是动态的值 有报错的例子 ...

漫步海边小路
26分钟前
0
0
Java NIO示例

Server端 /** * 《构建高性能的大型分布式Java应用》 * 书中的示例代码 * 版权所有 2008---2009 */package book.chapter1.tcpnio;import java.net.InetSocketAddress;i...

月下狼
32分钟前
0
0
发布xxl-job executor dotnet core 执行器的实现

DotXxlJob [github][https://github.com/xuanye/DotXxlJob] xxl-job的dotnet core 执行器实现,支持XXL-JOB 2.0+ 1 XXL-JOB概述 [XXL-JOB][1]是一个轻量级分布式任务调度平台,其核心设计目标...

假正经哥哥
今天
4
0
mysql 查询当天、本周,本月,上一个月的数据

今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1 近7天 SELECT * FROM 表名 wher......

BraveLN
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部