如何在Spring中没有HandlerInterceptor来拦截所有控制器的所有请求?

时间:2012-01-04 08:35:22

标签: spring-mvc interceptor

我要求在春季2.5中拦截所有请求。我不想使用HandlerInterceptor来拦截请求,因为它需要使用上下文文件中的每个SimpleUrlHandlerMapping bean来配置它。是否有其他方法可以在不使用HandlerInterceptor的情况下拦截所有请求?

1 个答案:

答案 0 :(得分:0)

您可以实现过滤器并将其映射到web.xml中的DispatcherServlet。然后你应该能够拦截对Spring MVC的所有请求。

简而言之:

  1. 创建javax.servlet.Filter
  2. 的实现
  3. 将过滤器添加到web.xml

    <filter>
     <filter-name>MyFilter</filter-name>
     <filter-class>mypackage.MyFilter</filter-class>
    </filter>
    

    然后将其映射到DispatcherServlet(servlet-name应该与为Spring Dispatcher servlet定义的相同。

    <filter-mapping>
        <filter-name>MyFilter</filter-name>
        <servlet-name>DispatcherServlet</servlet-name>
    </filter-mapping>
    
  4. 如果需要访问过滤器中的Spring ApplicationContext,请使用静态方法

       org.springframework.web.context.ContextLoader.getCurrentWebApplicationContext()