1. 先写个Hello World

1.1 写一个Interceptor class并实现HandlerInterceptor接口

public class FirstInterceptor implements HandlerInterceptor {

    @Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
System.out.println("FirstInterceptor,preHandle");
return true;
} @Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
System.out.println("FirstInterceptor,postHandle");
} @Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
System.out.println("FirstInterceptor,afterCompletion");
}
}

1.2 spring-mvc.xml配置

<mvc:interceptors>
<bean class="com.pawn.crud.web.interceptors.FirstInterceptor"/>
</mvc:interceptors>

1.3 访问任意目标方法 测试日志如下

FirstInterceptor,preHandle
FirstInterceptor,postHandle
FirstInterceptor,afterCompletion

1.4 HandlerInterceptor接口一共有三个方法

1)preHandler:该方法会在目标方法执行之前执行,一般用于事物,日志,权限等处理,另外返回结果为false时,会拦截之后的拦截器以及目标方法,请求就此终止

2)postHandler:该方法会在目标方法执行之后,渲染视图之前执行,一般用于对将要进行视图渲染的属性和参数进行修改

3)afterCompletion:该方法会在视图渲染之后执行,一般用于资源释放

2. 拦截器可配置只对某个目录进行拦截或不拦截

<mvc:interceptor>
  <mvc:mapping path="/test"/>
  <!--<mvc:exclude-mapping path="/emps"/>-->
<bean class="com.pawn.crud.web.interceptors.FirstInterceptor"/> </mvc:interceptor>

3. 多个拦截器的执行顺序

注意:当其中某个拦截器的preHandler返回false时,该拦截器的之前的拦截器们还是会被执行的

demo:https://github.com/705645051/demoCrud

每天学点SpringMVC-拦截器的更多相关文章

  1. SpringMVC拦截器的使用

    SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那 ...

  2. SpringMVC拦截器详解[附带源码分析]

    目录 前言 重要接口及类介绍 源码分析 拦截器的配置 编写自定义的拦截器 总结 总结 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:h ...

  3. SpringMVC拦截器2(资源和权限管理)(作为补充说明)

    SpringMVC拦截器(资源和权限管理) 1.DispatcherServlet SpringMVC具有统一的入口DispatcherServlet,所有的请求都通过DispatcherServle ...

  4. SpringMVC拦截器(实现登录验证拦截器)

    本例实现登陆时的验证拦截,采用SpringMVC拦截器来实现 当用户点击到网站主页时要进行拦截,用户登录了才能进入网站主页,否则进入登陆页面 核心代码 首先是index.jsp,显示链接 <%@ ...

  5. Spring+SpringMVC+MyBatis深入学习及搭建(十七)——SpringMVC拦截器

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7098753.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十六)--S ...

  6. SpringMVC拦截器Interceptor

    SpringMVC拦截器(Interceptor)实现对每一个请求处理前后进行相关的业务处理,类似与servlet中的Filter. SpringMVC 中的Interceptor 拦截请求是通过Ha ...

  7. 五 : springMVC拦截器

    springMVC拦截器的实现一般有两种方式 第一种方式是要定义的Interceptor类要实现了Spring的HandlerInterceptor 接口 第二种方式是继承实现了HandlerInte ...

  8. 基于SpringMVC拦截器和注解实现controller中访问权限控制

    SpringMVC的拦截器HandlerInterceptorAdapter对应提供了三个preHandle,postHandle,afterCompletion方法. preHandle在业务处理器 ...

  9. 解决SpringMVC拦截器中Request数据只能读取一次的问题

    解决SpringMVC拦截器中Request数据只能读取一次的问题 开发项目中,经常会直接在request中取数据,如Json数据,也经常用到@RequestBody注解,也可以直接通过request ...

  10. springmvc拦截器的简单了解

    1.定义一个拦截器 2.在springmvc.xml中配置拦截器. (1)拦截器拦截的请求是建立在前端控制器配置之下的,若DispatcherServlet拦截的是*.action,则拦截器即使配置 ...

随机推荐

  1. python版mapreduce题目实现寻找共同好友

    看到一篇不知道是好好玩还是好玩玩童鞋的博客,发现一道好玩的mapreduce题目,地址http://www.cnblogs.com/songhaowan/p/7239578.html 如图 由于自己太 ...

  2. css预处理器之一---sass(一)

    慕课学习笔记: CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进行编码工作. 通俗 ...

  3. Tomcat启动:Container StandardContext[] has not been started

    Container StandardContext[] has not been started\root.xml 初始化失败,检查数据源配置

  4. python2 urllib2抓取51job网的招聘数据

    #coding=utf-8 __author__ = "carry" import sys reload(sys) sys.setdefaultencoding('utf-8') ...

  5. AHD-模拟高清芯片RN6752替代TVP5150/CJC5150

    RN6752功能:2路CVBS转BT656/601/1302高清视频解码芯片.产品特征输入:2路CVBS(不能同时输入)和S-VIDEO(一般不用)输出:BT601/656/1302支持NTSC,PA ...

  6. Springmvc_validation 效验器

    springmvc-validation效验器的使用介绍 对于任何一个应用来说,都会做数据的有效性效验,但是只在前端做并不是很安全,考虑到安全性這个时候会要求我们在服务端也对数据进行有效验证,spri ...

  7. 正则语言引擎:一个简单LEX和YACC结合运用的实例

    本文先描述了LEX与YACC的书写方法.然后利用LEX与YACC编写了一个简单正则语言的引擎(暂时不支持闭包与或运算),生成的中间语言为C语言. 正则引擎应直接生成NFA或DFA模拟器的输入文件,但在 ...

  8. 【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17161237 Java中实现多线程有两种方法:继承Thread类.实现Runnable接口 ...

  9. 201521123107 《Java程序设计》第9周学习总结

    第9周作业-异常 1.本周学习总结 2.书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什 ...

  10. java记事本1.2版

    功能:实现了新建,打开,保存,退出,复制,剪切,粘贴等功能 效果图: