SpringMVC之拦截器


拦截器概述

1.1什么是拦截器(HandleUbterceper)

拦截器可以在目标方法执行之前进行一些拦截工作,或者在目标方法执行过后进行一些操作.在javaWeb的学习当中我们就学过了拦截器,当然在SpringMVC也为我们提供了新的拦截器,在本篇文章中我们就来研究SpringMVC中的拦截器.

1.2拦截器的定义

1.编写类实现HandlerInterceptor接口

2.继承HandlerInterceptor接口的实现类(如HandlerInterceptorAdapter)来定义。

3.通过实现WebRequestInterceptor接口

4.继承WebRequestInterceptor接口的实现类来定义。

栗子

下面我们以实现HandleInterceptor接口来举个栗子

public class SpringFilterTest implements HandlerInterceptor {    @Override    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {        System.out.println("1....preHandle...执行了");        return true;//当它为true时放行    }

    @Override    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {        System.out.println("1....postHandle.....执行了");    }

    @Override    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {        System.out.println("1....afterCompletion.....执行了");    }}

方法

preHandle()方法

preHande()方法会在控制器方法前进行调用,其返回值决定是否中断后续操作.返回值为true表示继续执行,返回值false表示中断后续操作(包括下一个拦截器或者控制器的方法执行)

postHandle()方法

postHandle()方法在目标方法执行后执行,且在视图解析器前执行,我们可以在此中对视图进行修改.

afterCompletion()方法

afterCompletion()方法在整个请求执行完毕后执行,既视图渲染完成后执行.我们可以记录一些日志,缓存清理等.

配置

在编写了自定义的拦截器后,拦截器并不能工作,现在的我们需要对拦截器进行配置

<mvc:interceptors>    <!--会拦截所有Controller类的所有方法-->    <bean class="net.Arenly.utils.FilterTest"></bean>    <mvc:interceptor>        <!--配置单方法拦截-->        <mvc:mapping path="/test01"/>        <bean class="net.Arleny.service.DownloadT"/>    </mvc:interceptor>    <mvc:interceptor>        <!--拦截所有请求,排除拦截 /test01 请求-->       <mvc:mapping path="/**"/>     <mvc:exclude-mapping path="/test01"/>       <bean class="net.Arleny.service.DownloadT"/>     </mvc:interceptor></mvc:interceptors>

运行结果

1....preHandle...执行了test执行了1....postHandle.....执行了页面执行了1....afterCompletion.....执行了

通过控制台打印的数据我们可以看出来 preHandle放在在目标方法执行之前,postHandle在页面渲染之前,afterCompltion方法在页面渲染完成之后。


吾生也有涯,而知也无涯。——庄子


                                  微信号 : Arenly-bilibili : 爱无理取闹的猪

SpringMVC拦截器详解相关推荐

  1. 第五章 处理器拦截器详解——跟着开涛学SpringMVC

    5.1.处理器拦截器简介 Spring Web MVC的处理器拦截器(如无特殊说明,下文所说的拦截器即处理器拦截器)类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理.   ...

  2. springMVC教程--拦截器详解

    3 拦截器 3.1 定义 Spring Web MVC 的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理. 3.2 拦截器定义 实现HandlerInte ...

  3. 第五章 处理器拦截器详解

    5.1.处理器拦截器简介 Spring Web MVC的处理器拦截器(如无特殊说明,下文所说的拦截器即处理器拦截器) 类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理. ...

  4. structs2拦截器详解

    Struts2(XWork)提供的拦截器的功能说明: 拦截器 名字 说明 Alias Interceptor alias 在不同请求之间将请求参数在不同名字件转换,请求内容不变 Chaining In ...

  5. 一文贯通→过滤器与拦截器详解

    一.过滤器Filter 过滤器英文叫 Filter,是 JavaEE 的标准,依赖于 Servlet 容器,可以按照指定顺序配置多个.常用来配置请求编码以及过滤一些非法参数,垃圾信息或者是网站登录验证 ...

  6. java参数action_Struts2之Action接收请求参数和拦截器详解

    技术分析之在Struts2框架中使用Servlet的API 1. 在Action类中也可以获取到Servlet一些常用的API 需求:提供JSP的表单页面的数据,在Action中使用Servlet的A ...

  7. struts2 18拦截器详解(五)

    I18nInterceptor 该拦截器处理defaultStack第四的位置,是用来方便国际化的,如果说我们的一个Web项目要支持国际化的话,通常的做法是给定一个下拉框列出所支持的语言,当用户选择了 ...

  8. AspectCore动态代理中的拦截器详解(一)

    前言 在上一篇文章使用AspectCore动态代理中,简单说明了AspectCore.DynamicProxy的使用方式,由于介绍的比较浅显,也有不少同学留言询问拦截器的配置,那么在这篇文章中,我们来 ...

  9. ​​​​​​过滤器和拦截器详解

    过滤器 和 拦截器的 6个区别,别再傻傻分不清了_程序员小富的博客-CSDN博客_过滤器和拦截器 若依登陆过程及过滤器拦截器的使用: 用户登陆接口:1.把用户信息通过uuid即token作为key,存 ...

最新文章

  1. 科技部向全社会征集颠覆性技术研发方向
  2. c语言随机产生100个字母,C语言实现产生100以内的随机数做加减运算
  3. VTK:几何对象之OpenVRFrustum
  4. android指定sqlite路径_Android:自定义Sqlite数据库路径
  5. linux之shell编程基本语法
  6. ajax传递字符,Ajax怎么传递特殊字符的数据
  7. Vue中Object和Array数据变化侦测原理
  8. 教你一招最屌的阅读开源项目的姿势
  9. 地图标识符号大全_资源小结:中国分省地图大全(10.23版)
  10. 基于Springboot+Vue+ElementUI物流配送管理系统
  11. 中国天气的各个城市的id,整理成json文件记录
  12. 计算机主板扩展槽,计算机内部所有插槽介绍,10分钟读懂电脑主板,高手必备!...
  13. 【Python爬虫】爬取 LOL 全英雄全皮肤图片
  14. 无法核实服务器证书,申请证书审核失败的原因及处理方法
  15. 研究生北大计算机双学位,北京大学2018年本科双学位招生通知
  16. Java - java代码实现ip归属地查询,调用百度ip地址查询,局域网也能查询到位置
  17. select搜索功能实现
  18. 2015年11月27日 野外生存(一)刀
  19. 如何用PS去掉照片中的路人
  20. Shell - timeout命令

热门文章

  1. C语言 一维数组、二维数组的创初始化、使用和存储
  2. BlueStacks模拟器:多平台上运行Android应用
  3. 现代教育技术没有计算机基础知识教程,[现代教育技术计算机基础知识培训.ppt...
  4. android jackson冲突,卸载Android app弹出浏览器的一种实现
  5. 【STM32+cubemx】0011 HAL库开发:I2C总线访问加速度传感器ADXL345
  6. 制作一个二人对战坦克游戏
  7. 基因数据处理47之ART基因序列数据生成器(仿真)
  8. python 动画人物动作_角色-动作
  9. 中柏6spro重装系统和各种驱动
  10. Nginx 从入门到实践,万字详解!