简介

springMVC拦截器针对处理器映射器进行拦截配置

如果在某个处理器映射器中配置拦截,经过该处理器映射器映射成功的Handler最终使用该拦截器

由于springMVC支持配置多个处理器映射器,因此针对拦截器的配置也有两种,一种针对某一处理器映射器进行配置,一种针对所有处理器映射器进行配置

而实践中往往使用后者,因此接下来的测试代码也以后者为主

拦截器配置

Controller层

    @RequestMapping("/queryUser")
public String queryUser(User user) {
System.out.println("Handler");
return "/WEB-INF/jsp/user.jsp";
}
自定义拦截器需实现HandlerInterceptor接口
public class FirstHandlerInterception implements HandlerInterceptor { /**
* 执行期:进入Handler方法之前执行
* 应用:用于身份认证、身份授权
*/
@Override
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
System.out.println("preHandle");
//false代表拦截,不向下执行
//true代表通过
return false;
} /**
* 执行期:进入Handler方法之后,返回ModelAndView之前
* 应用:用于向ModelAndView中填充公共数据、指定统一的视图
*/
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception {
System.out.println("postHandle");
} /**
* 执行期:进入Handler完成
* 应用:用于统一异常处理、统一日志处理
*/
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception {
System.out.println("postHandle");
}
}

springMVC配置文件中配置拦截器

    <!-- 配置拦截器 -->
<mvc:interceptors>
<!-- 多个拦截器顺序执行 -->
<mvc:interceptor>
<!-- 拦截所有URL -->
<mvc:mapping path="/**"/>
<bean class="com.springmvc.intercepter.FirstHandlerInterception"></bean>
</mvc:interceptor>
</mvc:interceptors>

访问URL:http://localhost:8080/springMVC/queryUser.action

执行结果,Console输出:

多拦截器测试

配置拦截器2,方式与上文所诉一致,不再赘述

访问URL:http://localhost:8080/springMVC/queryUser.action

场景1:拦截器1通过,拦截器2通过
场景2:拦截器1不通过,拦截器2不通过
场景3:拦截器1不通过,拦截器2通过
场景4:拦截器1通过,拦截器2不通过

总结:

1、所有拦截器均通过,则首先顺序执行preHandler,再执行Handler,再逆序执行postHandler,再逆序执行afterCompletion

2、只要有一个拦截器不通过,则所有postHandler不执行

3、假设有n个拦截器,若第k的拦截器不通过,则先顺序执行preHandler到第k个拦截器(包括k的preHandler),然后逆序执行afterCompletion到第(k-1)个拦截器(不包括k的afterCompletion)

springMVC入门(八)------拦截器的更多相关文章

  1. <SpringMvc>入门七 拦截器

    什么是拦截器 1.SpringMVC框架中的拦截器用于 对处理器 进行预处理和后处理的技术. 2.可以定义拦截器链,按照顺序执行. 3.拦截器和过滤器功能类似,区别在 拦截器 过滤器 过滤器是Serv ...

  2. SpringMVC入门及拦截器

    SSM最后一个框架springmvc,其实上手特别简单.但是我昨天看一个深入源码的视频,差点GG.其实以前学过很多东西,都忘了,不敢说学会,现在有了本书,看过一遍之后.多多少少记住一些,权当我会用了, ...

  3. 9.springMVC中的拦截器

    springMVC中的拦截器大概大致可以分为以下几个步骤去学习: 1.自定义一个类实现HandlerInterceptor接口,这里要了解其中几个方法的作用 2.在springMVC的配置文件中添加拦 ...

  4. springMVC的全局拦截器

    先说说为什么要使用springMVC的全局拦截器,比如 当我们在访问接口的时候,我们一般都会先判断这个用户是否登陆,我们就要在每个接口的前面都要判断一下,想想是不是很蛋疼,那工作量... 这时候,我们 ...

  5. SpringMVC中的拦截器、过滤器的区别、处理异常

    1. SpringMVC中的拦截器(Interceptor) 1.1. 作用 拦截器是运行在DispatcherServlet之后,在每个Controller之前的,且运行结果可以选择放行或拦截! 除 ...

  6. 【SpringMVC学习11】SpringMVC中的拦截器

    Springmvc的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理.本文主要总结一下springmvc中拦截器是如何定义的,以及测试拦截器的执行情况和使用 ...

  7. SpringMVC 学习笔记(拦截器的配置))

    在设置SpringMVC的拦截器时,需要在SpringMVC中配置 拦截器对象,拦截器的的对象要 实现 HandlerInterceptor 接口 拦截器类的设置: public class inte ...

  8. (转)SpringMVC学习(十二)——SpringMVC中的拦截器

    http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...

  9. SpringMVC(AbstractController,拦截器,注解)

    1.Controller接口及其实现类 Controller是控制器/处理器接口,只有一个方法handleRequest,用于进行请求的功能处理(功能处理方法),处理完请求后返回ModelAndVie ...

  10. Java开发学习(二十八)----拦截器(Interceptor)详细解析

    一.拦截器概念 讲解拦截器的概念之前,我们先看一张图: (1)浏览器发送一个请求会先到Tomcat的web服务器 (2)Tomcat服务器接收到请求以后,会去判断请求的是静态资源还是动态资源 (3)如 ...

随机推荐

  1. Python package project

    使用 Python 书写项目打包程序(已经存在 shell 的脚本,经过对比 Python 脚本的执行过程更加的可控人性化实现的功能相同) #!/usr/bin/env python # _*_cod ...

  2. TCP通信---文件上传案例、多线程文件上传

    目前大多数服务器都会提供文件上传的功能,由于文件上传需要数据的安全性和完整性,很明显需要使用TCP协议来实现. TCP通信需要创建一个服务器端程序和一个客户端程序,实现客户端向服务器端上传文件 代码实 ...

  3. dp 数字三角形

    冻龟之前 先看地龟 // // Created by snnnow on 2020/7/23 // //递归算法,除了慢其实还好 #include<iostream> #include&l ...

  4. 蒲公英 · JELLY技术周刊 Vol.16 谷歌首个线上 Web 开发者大会

    蒲公英 · JELLY技术周刊 Vol.16 近期,谷歌有史以来的第一次线上谷歌 Web 开发者大会,Web Vitals.PWA.DevTools 和 Lighthouse 6.0 等一系列特性或产 ...

  5. 完了!TCP出了大事!

    前情回顾:<非中间人就不能劫持TCP了吗?> 不速之客 夜黑风高,乌云蔽月. 两位不速之客,身着黑衣,一高一矮,潜入Linux帝国. 这一潜就是一个多月,直到他们收到了一条消息······ ...

  6. PHP localtime() 函数

    ------------恢复内容开始------------ 实例 以一个数值数组和一个关联数组的形式输出本地时间: <?phpprint_r(localtime());echo "& ...

  7. PHP rmdir() 函数

    定义和用法 rmdir() 函数删除空的目录. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE. 语法 rmdir(dir,context) 参数 描述 dir 必需.规定要删除的目录. ...

  8. PHP simplexml_load_file() 函数

    实例 转换 XML 文件为 SimpleXMLElement 对象,然后输出对象的键和元素: <?php高佣联盟 www.cgewang.com$xml=simplexml_load_file( ...

  9. 5.19 省选模拟赛 小B的夏令营 概率 dp 前缀和优化dp

    LINK:小B的夏令营 这道题是以前从没见过的优化dp的方法 不过也在情理之中. 注意读题 千万不要像我这个sb一样 考完连题意都不知道是啥. 一个长方形 要求从上到下联通的概率. 容易发现 K天只是 ...

  10. Oracle连接池工具类OJDBCUtils

    Oraclejdbc.properties driverClassName=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@127.0.0. ...