springMVC入门(八)------拦截器
简介
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入门(八)------拦截器的更多相关文章
- <SpringMvc>入门七 拦截器
什么是拦截器 1.SpringMVC框架中的拦截器用于 对处理器 进行预处理和后处理的技术. 2.可以定义拦截器链,按照顺序执行. 3.拦截器和过滤器功能类似,区别在 拦截器 过滤器 过滤器是Serv ...
- SpringMVC入门及拦截器
SSM最后一个框架springmvc,其实上手特别简单.但是我昨天看一个深入源码的视频,差点GG.其实以前学过很多东西,都忘了,不敢说学会,现在有了本书,看过一遍之后.多多少少记住一些,权当我会用了, ...
- 9.springMVC中的拦截器
springMVC中的拦截器大概大致可以分为以下几个步骤去学习: 1.自定义一个类实现HandlerInterceptor接口,这里要了解其中几个方法的作用 2.在springMVC的配置文件中添加拦 ...
- springMVC的全局拦截器
先说说为什么要使用springMVC的全局拦截器,比如 当我们在访问接口的时候,我们一般都会先判断这个用户是否登陆,我们就要在每个接口的前面都要判断一下,想想是不是很蛋疼,那工作量... 这时候,我们 ...
- SpringMVC中的拦截器、过滤器的区别、处理异常
1. SpringMVC中的拦截器(Interceptor) 1.1. 作用 拦截器是运行在DispatcherServlet之后,在每个Controller之前的,且运行结果可以选择放行或拦截! 除 ...
- 【SpringMVC学习11】SpringMVC中的拦截器
Springmvc的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理.本文主要总结一下springmvc中拦截器是如何定义的,以及测试拦截器的执行情况和使用 ...
- SpringMVC 学习笔记(拦截器的配置))
在设置SpringMVC的拦截器时,需要在SpringMVC中配置 拦截器对象,拦截器的的对象要 实现 HandlerInterceptor 接口 拦截器类的设置: public class inte ...
- (转)SpringMVC学习(十二)——SpringMVC中的拦截器
http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...
- SpringMVC(AbstractController,拦截器,注解)
1.Controller接口及其实现类 Controller是控制器/处理器接口,只有一个方法handleRequest,用于进行请求的功能处理(功能处理方法),处理完请求后返回ModelAndVie ...
- Java开发学习(二十八)----拦截器(Interceptor)详细解析
一.拦截器概念 讲解拦截器的概念之前,我们先看一张图: (1)浏览器发送一个请求会先到Tomcat的web服务器 (2)Tomcat服务器接收到请求以后,会去判断请求的是静态资源还是动态资源 (3)如 ...
随机推荐
- DOM练习 选择框、表格添加、变色
多个选择框,三个按钮,显示:全选.反选.不选 html部分,建立五个多选框,三个按钮 <input type="checkbox"> <input type=&q ...
- 进度条函数 -------ajax初试
做一个显示任务完成情况的进度条: <!DOCTYPE html> <html> <head> <meta charset="utf-8"& ...
- Spring报错: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [xxx]
如果确实没有这个类,就挨个将总项目,子项目clean,install一下,注意他们的依赖关系.
- GitOps初阶指南:将DevOps扩展至K8S
本文转自Rancher Labs 在过去十年的编程中,出现了一些革命性的转变.其中之一是源于围绕DevOps的实践,它将开发和运维团队整合到一个共享的工作流程中,此外还有持续集成和持续交付(CI/CD ...
- PHP hex2bin() 函数
实例 把十六进制值转换为 ASCII 字符: <?phpecho hex2bin("48656c6c6f20576f726c6421");?> 以上实例输出结果: He ...
- 为什么switch不支持long
switch 支持的类型 在 Java 语言规范里中,有说明 switch 支持的类型有:char.byte.short.int.Character.Byte.Short.Integer.String ...
- ios_中将UITextField输入框设置为密码形式
1.通过XIB方式实现: 将UITextField中的secure选项勾中即可. 2.通过代码实现: UItextField * test = [ UItextField alloc] init ]; ...
- MySQL索引结构原理分析
我们在学习MySQL的时候经常会听到索引这个词,大概也知道这是什么,但是深究下去又说不出什么道道来.下面将会比较全面的介绍一下关于索引! 1 索引是什么? 这里用百度百科的一句话来说,在关系数据库中, ...
- 比PS还好用!Python 20行代码批量抠图
你是否曾经想将某张照片中的人物抠出来,然后拼接到其他图片上去,从而可以即使你在天涯海角,我也可以到此一游? 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在 ...
- 如果连这10个Python缩写都不知道,那你一定是Python新手
简介 对于许多开始学习编程的人来说,Python已经成为他们的首选.Python有非常直观的语法和支持动态类型的灵活性.此外,它是一种解释语言,这使得使用交互式控制台进行学习成为可能.基本上,我们只需 ...