Rest jersey:如何将数据从Servlet发送到jersey筛选器
在servlet doPost方法中,我正在多值映射中设置一些数据,如图所示Rest jersey:如何将数据从Servlet发送到jersey筛选器,rest,jersey,Rest,Jersey,在servlet doPost方法中,我正在多值映射中设置一些数据,如图所示 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession sess = request.getSession(); System.out.prin
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
HttpSession sess = request.getSession();
System.out.println("Session ID For Servlet"+sess.getId());
sess.setAttribute("Name","ID");
MultivaluedMap formData = new MultivaluedMapImpl();
formData.add("name1", "val1");
formData.add("name2", "val2");
response.sendRedirect("ajax/balances");
}
谁能告诉我如何在jersey过滤器中获得该值
这是我的过滤器
public class MineFilter implements ContainerRequestFilter {
@Override
public ContainerRequest filter(ContainerRequest request) {
return request ;
}
或者,如果可以将数据从Servlet发送到Jersey Filter,还有更好的方法吗?在Jersey中,有两种类型的接口
ContainerRequestFilter
和ContainerResponseFilter
,这两种接口都有一种方法void Filter(condeformo)
因此,在过滤器中,如果我们只实现了ContainerRequestFilter
,它只会在请求到达servlet之前被调用,因此这些有时也称为请求过滤器。现在,如果我们想要截获响应,我们需要编写一个实现这两个接口的类
这样做的一个明显原因是,当请求第一次进入时,不需要responseContext,因为我们几乎不会使用它,所以我们可以通过简单地实现ContainerRequestContext
来省略它。现在,当我们谈论拦截响应时,我们可以清楚地看到需要RequestContext,它可以用来获取有关请求的信息。因此,这就是我们所拥有的。因此,所谓的响应过滤器将能够同时过滤请求和响应。因此,当我们重写ContainerResponseFilter的空过滤器(上下文信息)时,它同时具有请求上下文和响应上下文。此处的请求上下文将处于只读模式
因此,一旦请求通过servlet,您就可以始终使用ContainerResponseFilter
的实现拦截响应,并从响应中获取值
@Provider
@Priority(2) //set the priority just to make sure it is executed after the request filter
public class CustomResponseFilter implements ContainerRequestFilter, ContainerResponseFilter{
@Override
public void filter(ContainerRequestContext requestCOntext) throws IOException {
//dont Do anything here as this filter is intended for response processing
}
@Override
public void filter(ContainerRequestContext requestContext,
ContainerResponseContex responseContext) throws IOException {
//work with the responseContext and let the requst pass through
}
}