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. linux shell sed 删除文件 前几行
  2. 【CodeForces】576 C. Points on Plane
  3. sql注入-error、boolean、time-based and 宽字节
  4. 帮助你高效开发Ajax应用的超酷jQuery插件 - AjaxML
  5. 点击按钮显示div并向div中传递参数
  6. [USACO10DEC] Treasure Chest
  7. matlab频响优化,MATLAB中关于频响图函数最优化的程序问题
  8. 给页面中的所有链接新窗口中打开
  9. (三)Appium-desktop 打包
  10. python unpack_python中struct.pack()函数和struct.unpack()函数
  11. 分享一个NHibernate的博客链接
  12. pytorch---之cudnn.benchmark和cudnn.deterministic
  13. TensorFlow学习笔记——循环神经网络
  14. 地震时,它可以救你一命!
  15. centos8 挂载ntfs_Centos 挂载Ntfs分区
  16. MMKV_MMKV使用教程
  17. hyper-v虚拟机驱动_如何在Hyper-V虚拟机中访问本地和USB硬盘驱动器
  18. 嵌入式软件工程师笔试面试指南目录
  19. LM75 --温度采集(时序及代码)
  20. ABP文档 - Mvc 控制器

热门文章

  1. 北航非全日制研究生计算机分数线,2019年北京航空航天大学在职研究生的录取分数线会不会高于2018年...
  2. topcoder开发
  3. 计算机视觉-opencv银行卡识别
  4. Unexpected lexical declaration in case block.
  5. FFmpeg从入门到牛掰(一):解复用(demux)讲解
  6. 写一个rtrim()函数消除字符串后面的空格字符。编main函数调用测试它。
  7. BootStrap #响应式布局 #组件
  8. c#4.0捷径教程委托、匿名方法和事件笔记
  9. 面向网络转型的编排管理系统和ONAP自研产品介绍
  10. linux 触摸屏测试源码_Linux和android下测试键盘和触摸屏