java - Spring 3.1 HandlerInterceptor 未被调用

标签 java spring

我遵循了 HandlerInterceptors 的文档。注意在新版本的 Spring 中:“配置的拦截器将应用于所有使用带注释的 Controller 方法处理的请求”。

下面是一个xml配置文件: enter image description here

我有一个带注释的 Controller ,开头是这样的:

enter image description here

当我请求一个执行 Controller 代码的 url 时,我的拦截器代码从未被调用。谁能解释一下为什么?

拦截器代码为:

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class DomainNameInterceptor extends HandlerInterceptorAdapter {
    public boolean preHandle(HttpServletRequest request,
                           HttpServletResponse response, Object handler) 
         throws Exception {
    System.out.println("Why is this not called?");
    return true;
  }
}

我使用的是以下文档: Spring Core 3.1.x Documentation

我搜索了 HandlerInterceptor 并按照包含链接中的文档中给出的示例进行操作。

最佳答案

如果您使用 <mvc:annotation-driven/> 配置了 MVC 上下文,那么我认为基于此自定义命名空间定义 bean 时创建的 handlerMapping 会覆盖您定义的 handlerMapping。注册拦截器的更好方法是使用 <mvc:interceptors>子标签来定义拦截器,这样它将注册到正确的处理程序映射:

<mvc:annotation-driven>
    <mvc:interceptors>
        <ref bean="interceptor"/>
    </mvc:interceptors>
</mvc:annotation-driven>

关于java - Spring 3.1 HandlerInterceptor 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10745736/

相关文章:

java - 如何递归删除

java - Spring异步MessageListener用例发生业务异常时如何让RabbitMQ重试

java - java中如何将字符串与通配符匹配

java - 从局部变量获取值到类变量

java - 这段代码怎么会抛出空指针异常?

web-services - 在 Spring 中发出 HTTP 请求的最简单方法

java - 使用 Spring Security 定义 HTTP 路由以仅服务于 "internal"请求

java - Spring注解在不同层的应用

java - 在tomcat上部署项目后,日志中出现Scala错误

java - 如何在 Java 中使用正则表达式组