拦截器:

com.zk.interceptors.MyInterceptor 实现了 HandlerInterceptor接口,可以拦截@RequestMapping注解的类和方法

第一种方式

    <mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.zk.interceptors.MyInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>

拦截正常

第二种方法,拦截不到

    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<bean class="com.zk.interceptors.MyInterceptor"></bean>
</list>
</property>
</bean>

DefaultAnnotationHandlerMapping类中说Defining a DefaultAnnotationHandlerMapping also allows for registering custom interceptors。

可以通过DefaultAnnotationHandlerMapping注册自定义拦截器。可是为什么拦截不到呢?

原来第二种方式在xml中注册的DefaultAnnotationHandlerMapping,没有真正覆盖掉DispatcherServlet注册的默认DefaultAnnotationHandlerMapping。

原因就在于我的xml中多了这一行
<mvc:annotation-driven />。 它默认已经注册了DefaultAnnotationHandlerMapping,AnnotationMethodHandlerAdapter 。

所以去掉它后,第二种方式,第一种方式都运行正常。

<mvc:annotation-driven />元素不建议使用。

因为

<!-- 包扫描,注册了各种处理器,<mvc:annotation-driven />也有可能重复注册好多处理器。只有我们都熟悉了,再使用完全自动化吧 -->
<context:component-scan base-package="com.zk"/>

------------注册多个注解器

 <mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.zk.interceptors.MyInterceptor"/>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.zk.interceptors.MyInterceptor2"/>
</mvc:interceptor>
</mvc:interceptors>

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<bean class="com.zk.interceptors.MyInterceptor"></bean>
<bean class="com.zk.interceptors.MyInterceptor2"></bean>
</list>
</property>
</bean>

执行顺序

perHandler()
perHandler2()
----------------Handler method()
postHandle2()
postHandle()
afterCompletion2()
afterCompletion()

后缀有2的为MyInterceptor2中的方法,没有的为MyInterceptor中的方法

最新文章

  1. 分享在winform下实现模块化插件编程
  2. Jquery中each的三种遍历方法
  3. Oracle Redo
  4. 解决xshell连接linux总是异常断开的问题?
  5. TQ210裸机编程(4)——按键(中断法)
  6. 最终版-perl工具解析数据库的报告文件0120
  7. vs2008打包公布程序
  8. An FPS counter.
  9. Bug :”解压压缩文件失败: cpio; 在头中不存在归档“
  10. [FileStream] 使用
  11. (原+转)ubuntu中删除文件夹
  12. (转载博文)MFC 窗口句柄获取
  13. MVC EF 修改 封装类 通用泛型方法(二)
  14. Java-设计模式-单例模式-饿汉模式、懒汉模式
  15. 安利一波那个叫做 hutool 的通用工具类库
  16. 菜鸡谈OO 第二单元总结
  17. 项目ITP(三) 玩玩 服务端 到 app端
  18. CF1083E The Fair Nut and Rectangles
  19. Js 基本类型和引用类型
  20. 如何判断mac地址时multicast还是broadcast ?

热门文章

  1. shell中与C语言中的区别
  2. 在Azure DevOps Server的代理服务器安装Python环境
  3. ASP.NET Core 2.2中的Endpoint路由
  4. Spring Boot发布将jar包转为war包。
  5. iOS开发笔记-根据frame大小动态调整fontSize的自适应文本及圆形进度条控件的实现
  6. hdu 6127---Hard challenge(思维)
  7. TCP/IP 笔记 - 传输控制协议
  8. MariaDB 数据库
  9. python-拷贝
  10. Vue + Element UI 实现权限管理系统 前端篇(十四):菜单功能实现