我需要在我的spring-jersey应用程序中编写一个拦截器/过滤器,它将检查会话的每个请求,并且在成功时它会将代码传递给相应的控制器。传递此代码是imp,因为基于代码控制器将决定进一步的操作。
问: 1)这可以在Spring中编写这种登录过滤器吗?怎么样? 2)这是否可以从拦截器传递一些代码到控制器?怎么样?
答案 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>