Spring拦截器/过滤器

问题描述:

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

问: 1)这是可能在春季写这种登录过滤器吗?怎么样? 2)这是可能从拦截器传递一些代码给控制器吗?怎么样?

+0

spring-jersey?那么你是使用@Controller还是JSR-311注释?两种情况下的答案都会有所不同。 – goroncy

+0

从控制器来说,我的意思是泽西的控制器(JSR-311注释)。 – Arnav

我们需要实现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>