弹簧拦截器/过滤器

时间:2011-09-22 15:10:04

标签: security spring filter interceptor

我需要在我的spring-jersey应用程序中编写一个拦截器/过滤器,它将检查会话的每个请求,并且在成功时它会将代码传递给相应的控制器。传递此代码是imp,因为基于代码控制器将决定进一步的操作。

问: 1)这可以在Spring中编写这种登录过滤器吗?怎么样? 2)这是否可以从拦截器传递一些代码到控制器?怎么样?

1 个答案:

答案 0 :(得分:0)

我们需要实现ContainerRequestFilter接口来创建Jersey过滤器。以下是使用泽西过滤器拦截和修改请求的代码示例:

import com.sun.jersey.spi.container.ContainerRequest;
import com.sun.jersey.spi.container.ContainerRequestFilter;
import javax.ws.rs.core.MultivaluedMap;
import org.apache.log4j.Logger;

/**
 *
 * @author arnav
 */
public class MyAppFilter implements ContainerRequestFilter{


   public ContainerRequest filter(ContainerRequest request) {

      MultivaluedMap<String, String> headers = request.getRequestHeaders();

      headers.add("code", "MY_APP_CODE");
      request.setHeaders((InBoundHeaders)headers);

      return request;
   }
}

添加此类后,我们需要为Web应用程序注册此过滤器。现在我们将在web.xml中添加以下行:

<servlet>
      ..........
      ..........   
      <init-param>
         <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
         <param-value>package.MyAppFilter</param-value>
      </init-param> 
</servlet>