【Spring】14、SpringMVC拦截器的配置
拦截器:
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中的方法
【Spring】14、SpringMVC拦截器的配置的更多相关文章
- springmvc拦截器的配置、使用
springmvc拦截器的配置.使用:1.自定义拦截器,实现HandlerInterceptor接口. package com.bybo.aca.web.interceptor; import jav ...
- SpringMVC拦截器的配置与使用详解
一.SpringMVC拦截器简介 Spring MVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理.在springmvc中,定义拦截 ...
- springMVC 拦截器简单配置
在spring 3.0甚础上,起来越多的用到了注解,从前的拦截器在配置文件中需要这样配置 <beans...> ... <bean id="measurementInter ...
- spring自定义注解拦截器的配置
1.创建注解文件 (文件格式为注解) 这里面什么都不需要写 文件名就是注解名称 如下 是@anno package com.ABC123.anno; import java.lang.annotati ...
- springMVC拦截器简单配置
<!-- 拦截器 --> <mvc:interceptors> <mvc:interceptor> <!-- 拦截所 ...
- Spring MVC 使用拦截器 HiddenHttpMethodFilter配置Rest风格的URL
<!-- 4.使用Rest风格的URI,将页面普通的post请求转为指定的delete或者put请求 --> 详细使用请参考这篇博客:地址:http://blog.csdn.net/ppl ...
- spring boot配置springMVC拦截器
spring boot通过配置springMVC拦截器 配置拦截器比较简单, spring boot配置拦截器, 重写preHandle方法. 1.配置拦截器: 2重写方法 这样就实现了拦截器. 其中 ...
- Spring+SpringMVC+MyBatis深入学习及搭建(十七)——SpringMVC拦截器
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7098753.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十六)--S ...
- Springboot中SpringMvc拦截器配置与应用(实战)
一.什么是拦截器,及其作用 拦截器(Interceptor): 用于在某个方法被访问之前进行拦截,然后在方法执行之前或之后加入某些操作,其实就是AOP的一种实现策略.它通过动态拦截Action调用的对 ...
随机推荐
- shell解析my.cnf配置文件
my.cnf配置格式如下 vi my.cnf[client]port=3306socket=/tmp/mysql.socket [mysqld]port=3306server-id=1datadir= ...
- poj 3087 Shuffle'm Up (模拟过程)
Description A common pastime for poker players at a poker table is to shuffle stacks of chips. Shuff ...
- 【慕课网实战】Spark Streaming实时流处理项目实战笔记十九之铭文升级版
铭文一级:(没有内容) 铭文二级: 创建Spring boot项目: 看官网,Quick Start下面有两个依赖,必须得使用 但是如果用IDEA构建Spring boot,则会自动添加 New Pr ...
- 1.开始学习ASP.NET MVC
Hello,大家好! 好久没有开始记录博客了,是时候开始分享一下了,这个系列主要为零基础的同学,量身打造的.废话不多说,我们开干! 什么是ASP.NET MVC MVC(Model-View-Cont ...
- unity 简单通用游戏模式设计
好吧好吧,又谈到这个问题了,其实早就想写这个博客了,犹豫了好久.在设计游戏的时候我本人是很排斥什么游戏架构设计,mvc什么的,我只想马上动手就把自己的游戏玩法最快的用代码敲出来,还不会出无法挽回的错误 ...
- unable to load http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl
问题:unable to load http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl 解决:yum -y inst ...
- 什么是RDD?
顾名思义,从字面理解RDD就是 Resillient Distributed Dataset,即弹性分布式数据集. 它是Spark提供的核心抽象. RDD在抽象上来讲是一种抽象的分布式的数据集.它是被 ...
- PHP画矩形,椭圆,圆,画椭圆弧 ,饼状图
1:画矩形: imagerectangle ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $col ) imagere ...
- Eclipse建立Java工程中的三个JRE选项的区别(Use an execution environment JRE,Use a project specific JRE,Use default JRE)
本博客部分转载自: http://blog.csdn.net/wdjhzw/article/details/42086615 这篇博客写的非常好,很用心. 一.首先看新建Java Project时候 ...
- spring载入外部配置文件的方法
<bean class=“org.springframework.beans.factory.config.PropertyPlaceholderConfigurer“> <prop ...