文档章节

HandlerInterceptorAdapter的简介

刘太刚
 刘太刚
发布于 2017/09/08 20:07
字数 335
阅读 33
收藏 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的注解
刘太刚
粉丝 7
博文 37
码字总数 27804
作品 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.4K
2
spring中HttpServletRequestWrapper装饰者模式是如何理解的?

import java.awt.Font;import java.util.HashMap;import java.util.Map; interface FontProvider { } class DefaultFontProvider implements FontProvider { } class BufferedFontProvider i......

superchris
2015/12/10
2K
5
springmvc 实现注解式权限验证

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

岸芷汀兰
2015/05/22
0
0
使用Spring Interceptor实现URL访问校验

本文中介绍我在简单的实际应用中,针对登录用户的访问权限问题的具体实现,整体设计如下图: 图中请求进入Spring容器后会对用户的有效性、权限进行验证,只有验证都通过之后才能进入实际业务...

Laughing_Vzr
2016/10/19
231
0

没有更多内容

加载失败,请刷新页面

加载更多

码云项目100,水一发

简单回顾一下: 早期构想最多的,是希望能将PHP一些类和编码分区做得更细,所以很多尝试。但不得不说,PHP的功能过于单一,是的,也许写C/C++扩展,可以解决问题,那我为什么不用C#或者Golan...

曾建凯
今天
1
0
Spring应用学习——AOP

1. AOP 1. AOP:即面向切面编程,采用横向抽取机制,取代了传统的继承体系的重复代码问题,如下图所示,性能监控、日志记录等代码围绕业务逻辑代码,而这部分代码是一个高度重复的代码,也就...

江左煤郎
今天
4
0
eclipse的版本

Eclipse各版本代号一览表 Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。 Eclipse基本内核包括:图形API(SWT/Jface),Java开发环...

mdoo
今天
3
0
SpringBoot源码:启动过程分析(一)

本文主要分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 还是老套路,先把分析过程的时序图摆出来:时序图-SpringBoot2.10启动分析 二.源码分析 首...

Jacktanger
今天
6
0
小白带你认识netty(二)之netty服务端启动(上)

上一章 中的标准netty启动代码中,ServerBootstrap到底是如何启动的呢?这一章我们来瞅下。 server.group(bossGroup, workGroup);server.channel(NioServerSocketChannel.class).optio...

天空小小
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部