如何在Spring Web应用程序中预处理所有请求?

时间:2015-12-25 10:46:08

标签: java spring spring-mvc web-applications

我有一个RESTful Spring应用程序,它可以处理各种控制器和各种@RequestMapping - s的各种请求。

现在我希望每个请求都包含用户/密码对,用户GET参数?user=username和密码POST参数中的密码。

是否可以在所有请求进入控制器并检查凭据和可能的返回身份验证错误之前对其进行“预处理”?

这是一种机制,它是否是“过滤器”?

1 个答案:

答案 0 :(得分:4)

有多种方法可以在请求进入控制器之前拦截这些请求。

  
      
  1. 使用Servlet过滤器:
  2.   
    @WebFilter(urlPatterns = "path-to-intercept", filterName = "your-filter-name")
    public class MyRequestFilter implements Filter {
        init(...);
        doFilter(...);
        destroy(); 
    }
  
      
  1. 使用Spring HandlerIntecptors:
  2.   
    public class MyRequestInterceptor extends HandlerInterceptorAdapter{

        preHandle(...); //called before the request lands to the controller.
        postHandle(...); //called after the controller method finishes execution.
        afterCompletion(...); //called before the response is sent.
    }

在您的配置中:

    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/yourInterceptingPath/" />
            <bean class="path-to-your-Interceptor.MyRequestInterceptor" />
        </mvc:interceptor>
    </mvc:interceptors>