springMvc拦截器的执行顺序!

拦截器的各个方法的作用:


/** * 登录验证拦截器 */

     public class Intercepter implements HandlerInterceptor {

    /*

     * 执行时机:视图已经被解析完毕,类似try catch 后的finally,追踪错误
*/
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object, Exception exception) throws Exception { } /**
* 执行时机:controller执行完,视图解析器没有把视图解析成页面,
* 对视图做统一的修改,主要体现在Model上,可以追加数据  
*/
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView mv) throws Exception {
      Map<String,Object> map=mv.getModel();
      map.put("test","append something");
} /**
* 执行时机:在执行controller之前来执行
* 返回值类型:boolean:true代表放行可以访问controller,false不可以访问controller
*/
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception { return false;
}
}

写了两个拦截器,配置如下:

<!-- 配置拦截器 -->
<mvc:interceptors>
<!-- 多个拦截器,顺序执行 -->
<mvc:interceptor>
<mvc:mapping path="/**"/><!-- 表示所有的url,包括子url路径 --><!-- 某一模块的拦截:/myPath/**, 拦截所有的请求/**-->
<bean class="com.interceptors.EncodingInterceptor"></bean>
</mvc:interceptor>
<!--配置登陆拦截器 -->
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.interceptors.LoginHandlerIntercepter"></bean>
</mvc:interceptor>
</mvc:interceptors>

没写什么逻辑,就打印了log,LoginHandlerIntercepter中的log是01

结果简略如下:

preHandle.........
preHandle01.........
...
...
...
postHandle01.........
postHandle.........
...
...
...
afterCompletion01.........
afterCompletion.........

可以看出,按照拦截器的配置顺序先执行了字符拦截器,后执行了登录验证的拦截器;

但是:preHandler是按照拦截器的配置顺序执行的,而postHandler和afterCompletion是按照拦截器的配置顺序的倒序执行的

所以 :
如果统一日志处理器拦截器,需要改拦截器prehandler一定要返回true,且将它放在拦截器配置的第一个位置;
如果登陆认证拦截器,放在拦截器的配置中的第一个位置(有日志处理的话,放在日志处理下面);
如果有权限校验拦截器,则放在登陆拦截器之后,因为登陆通过后,才可以进行校验权限;

暂且记录这些。。。。

初学springMVC的拦截器的更多相关文章

  1. springmvc的拦截器

    什么是拦截器                                                         java里的拦截器是动态拦截action调用的对象.它提供了一种机制可以使 ...

  2. SpringMVC利用拦截器防止SQL注入

    引言 随着互联网的发展,人们在享受互联网带来的便捷的服务的时候,也面临着个人的隐私泄漏的问题.小到一个拥有用户系统的小型论坛,大到各个大型的银行机构,互联网安全问题都显得格外重要.而这些网站的背后,则 ...

  3. SpringMVC经典系列-14自己定义SpringMVC的拦截器---【LinusZhu】

    注意:此文章是个人原创.希望有转载须要的朋友们标明文章出处.假设各位朋友们认为写的还好,就给个赞哈.你的鼓舞是我创作的最大动力,LinusZhu在此表示十分感谢,当然文章中如有纰漏,请联系linusz ...

  4. 基于注解风格的Spring-MVC的拦截器

    基于注解风格的Spring-MVC的拦截器 Spring-MVC如何使用拦截器,官方文档只给出了非注解风格的例子.那么基于注解风格如何使用拦截器呢? 基于注解基本上有2个可使用的定义类,分别是Defa ...

  5. SpringMVC 学习-拦截器 HandlerInterceptor 类

    一.拦截器 HandlerInterceptor 类的作用 SpringMVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理. 二.怎么使用呢? 1. ...

  6. springMVC的拦截器工作流程

    首先,springmvc的拦截器配置在这就不多说了.主要讲一下拦截器的三个方法的执行顺序. preHandle方法一定是最先执行的方法,如果它返回为false下面的方法均不执行. postHandle ...

  7. SpringMVC—Struts2拦截器学习网址整理

    引自:http://blog.csdn.net/wp1603710463/article/details/49982683 SpringMVC—Struts2拦截器学习网址整理 最近项目中遇到权限相关 ...

  8. 转 :关于springmvc使用拦截器

    原博客: http://elim.iteye.com/blog/1750680 SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的 ...

  9. springmvc中拦截器与springmvc全局异常处理器的问题

    最近在做一个练手的小项目, 系统架构中用了springmvc的全局异常处理器, 做了系统的统一异常处理. 后来加入了springmvc的拦截器, 为了一些需求, 在拦截器中的 preHandle 方法 ...

随机推荐

  1. protobuf-2.5.0的下载与安装

    1.下载 Hadoop使用protocol buffer进行通信,需要下载和安装protobuf-2.5.0.tar.gz.由于现在protobuf-2.5.0.tar.gz已经无法在官网https: ...

  2. chrome 切换到其他网络后重新加载网

    chrome 突然提示 “您与 www.google.com 之间的安全连接目前正受到干扰.  请等待几分钟后再尝试重新加载网页,或在切换到其他网络后重新加载网” 查看证书发现 已经过期 解决:同步下 ...

  3. 《Cracking the Coding Interview》——第13章:C和C++——题目4

    2014-04-25 19:50 题目:深拷贝和浅拷贝有什么区别?如何应用? 解法:深拷贝传值,浅拷贝传引用.java里对此做了限制,而C++里面用起来更自由.大结构不宜传值,因为拷贝过程效率低. 代 ...

  4. MySQL隐式转换测试

      Preface       There're various data type in MySQL such as number,string,date,time,lob,etc.The data ...

  5. Selenium+Python自动化之如何绕过登录验证码

    一.使用Fiddler抓包 1.一般登陆网站成功后,会生成一个已登录状态的cookie,那么只需要直接把这个值拿到,用selenium进行addCookie操作即可. 2.可以先手动登录一次,然后抓取 ...

  6. 5.0 Genymotion安装以及基础使用

    后续考虑到python+appium多设备并发执行,需要多台手机,所以这里就直接更新一个jenymotion,后续多设备执行直接用真机+模拟器操作!Genymotion第一步:百度搜索[Genymot ...

  7. python学习笔记-参数带*

    #!/usr/bin/python # -*- coding: utf-8 -*- def powersum (power,*args): #所有多余的参数都会作为一个元组存储在args中     s ...

  8. 【Python】print 方法的参数

    当在IDEL或者命令行中执行 help(print) 命令时,就可以看到 print 方法的详细说明: print(value, ..., sep=' ', end='\n', file=sys.st ...

  9. 附录:python and numpy

    http://cs231n.github.io/python-numpy-tutorial/ Python is a great general-purpose programming languag ...

  10. JavaWeb笔记(四)Cookie&Session

    Cookie 客户端会话技术,客户端保存,用于存储少量不太敏感的数据,在不登陆的情况下完成服务器对客户端的身份识别 简单使用步骤 创建Cookie对象,绑定数据 new Cookie(String n ...