Interceptor 与 <mvc:annotation-driven /> 的冲突

第一次写,希望大神们呵呵即可。

最近在学习拦截器,没想到刚开始就碰到难题了。我明明配置好了拦截器,但是丝毫没有起作用,百思不得其解。

这是起初的配置:

<context:component-scan base-package="sin.cara.controller" />
    
     <mvc:annotation-driven />  

     <bean
        class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
        <property name="interceptors">
            <list>
                <ref bean="myInterceptor"/>
            </list>
        </property>
    </bean> 

     <bean id="myInterceptor" class="sin.cara.interceptors.MyInterceptors"/>    

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views" />
        <property name="suffix" value=".jsp" />
    </bean>

这是修改后的配置:

<context:component-scan base-package="sin.cara.controller" />

    
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
   <property name="interceptors"> <list> <ref bean="myInterceptor" /> </list> 
   </property> 
</bean> 
<bean id="myInterceptor" class="sin.cara.interceptors.MyInterceptors"> 
</bean> 

 <bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
</bean>

细心的看官也许发现了不同之处,是的,少了

<mvc:annotation-driven />

居然可以成功拦截。

原因是因为

<mvc:annotation-driven />

会自动为我们注册DefaultAnnotationHandlerMapping 与AnnotationMethodHandlerAdapter 这两个bean。所以第一种配置无法注入  interceptors属性,就不能指定拦截器。

当使用这种配置时

<mvc:interceptors> 
    <bean class="sin.cara.interceptors.MyInterceptors" /> 
</mvc:interceptors>

使不使用

<mvc:annotation-driven />

都没关系,都会成功拦截。还没弄明白这是为什么,希望OSCER们能帮我我解答。

时间: 2024-10-13 10:37:01

Interceptor 与 <mvc:annotation-driven /> 的冲突的相关文章

Spring MVC annotation configuration

1. Web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns

Caused by: java.lang.ClassNotFoundException: org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter

严重: StandardWrapper.Throwableorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping': Invocation of init method failed; nested excepti

[Spring MVC] - Annotation验证

使用Spring MVC的Annotation验证可以直接对view model的简单数据验证,注意,这里是简单的,如果model的数据验证需要有一些比较复杂的业务逻辑性在里头,只是使用annotation做验证是比较难的. 以下是使用Spring MVC自带的annotation验证,加上自定义的一个@Tel的annotation验证例子,此例子具有: 1.支持多语言(国际化) 2.对默认数据先进行转化,比如int.date类型如果传入空值时,会抛异常,默认给定值 先看配置: 1.web.xm

DWZ和ASP.NET MVC等框架的冲突问题解决方案

最近的一个项目用到了dwz和mvc的整合开发,但是dwz中的lookup查找带回功能对name标签进行了绑架,导致向后台传值不好处理,现在为标签 单独设置一个属性bringbackname来进行带回的关联 dwz.min.js 一.2714行,将带回到的属性进行更改,原先带回到name属性,现改为 var $input=$(this),inputName=$input.attr("bringbackname"); 二.2861行,为th新增属性 bringbackname: $th.a

Spring MVC @RequestMapping Annotation Example with Controller, Methods, Headers, Params, @RequestPar

Spring MVC @RequestMapping Annotation Example with Controller, Methods, Headers, Params, @RequestParam, @PathVariable Pankaj July 4, 2014 Spring @RequestMapping is one of the most widely used Spring MVC annotation.org.springframework.web.bind.annotat

use interceptor in spring mvc

SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那样子判断当前时间是否是购票时间. 一.定义Interceptor实现类 SpringMVC 中的Interceptor 拦截请求是通过HandlerInterceptor 来实现的.在SpringMVC 中定义一个Interceptor 非常简单,主要有两种方式,第一种方式是要定义的Intercep

Spring MVC @RequestMapping Annotation Example with Controller, Methods, Headers, Params, @RequestParam, @PathVariable--转载

原文地址: @RequestMapping is one of the most widely used Spring MVC annotation.org.springframework.web.bind.annotation.RequestMapping annotation is used to map web requests onto specific handler classes and/or handler methods. @RequestMapping can be appl

通过拦截器Interceptor实现Spring MVC中Controller接口访问信息的记录

java web工程项目使用了Spring+Spring MVC+Hibernate的结构,在Controller中的方法都是用于处理前端的访问信息,Controller通过调用Service进行业务处理后给前端返回ModelAndView对象或者只返回Json格式数据.如果能够获得Http请求在后端程序中处理的相关信息,对于开发和调试时十分方便的.工程中使用了Spring MVC的Interceptor对所有Http请求及其响应进行拦截,从而获取到本次访问接口信息以及程序处理时长等信息,特意在

详述 Spring MVC 框架中拦截器 Interceptor 的使用方法

1 前言 昨天新接了一个需要,"拦截 XXX,然后 OOO",好吧,说白了就是要用拦截器干点事(实现一个具体的功能).之前,也在网络上搜了很多关于Interceptor的文章,但感觉内容都大同小异,而且知识点零零散散,不太方便阅读.因此,正好借此机会,整理一篇关于拦截器的文章,在此分享给大家,以供大家参考阅读. 2 拦截器 2.1 概念 Java 里的拦截器是动态拦截 action 调用的对象.它提供了一种机制可以使开发者可以定义在一个 action 执行的前后执行的代码,也可以在一个