从REST Webservice调用Servlet之前的过滤器

Kau*_*shi 0 java rest web-services servlets servlet-filters

我编写了一个REST Web服务方法setToken(@Context HttpServletRequest request, @Context HttpServletResponse response, @PathParam("token") String token),HeaderFilter并且SampleServlet.下面是Web服务类`@Path("/ service")公共类Service {

/*@Context 
private ServletContext servletContext; 

@Context
private HttpServletRequest request;

@Context
private HttpServletResponse response;*/


@Path("/val/{token}")   
@GET
@Produces("application/xml")
public String setToken(@Context HttpServletRequest request, @Context HttpServletResponse response, @PathParam("token") String token) throws ServletException, IOException {
    String value=token;
    if(request==null){
        System.out.println("Request null");
    }
    System.out.println("Token: " + value);
    if(request!=null){
        request.setAttribute("param", value);
        Wrapper requestWrapper = new Wrapper(request);
        requestWrapper.addHeader("Authorization", token);
        request.getRequestDispatcher("/secure").include(requestWrapper, response);
    }
    return "<token>"+ "<value>"+value+" token value"+"</value>" + "</token>";
}
Run Code Online (Sandbox Code Playgroud)

}`

从使用的setTokenWeb服务方法和SampleServlet使用request.getRequestDispatcher("/secure").include(request, response);的URL是http:// localhost:8080/xxxx/xxxx/service/val/zzzz.zzzz是要传递的值.用于HeaderFilterSampleServlet/的安全的URL模式.现在问题是HeaderFilter没有调用,直接调用'SampleServlet'.我做错什么???? 请帮我解决这个问题.

ram*_*amp 7

HeaderFilter和SampleServlet的URL模式是/ secure.现在问题是没有调用HeaderFilter并直接调用'SampleServlet'.

默认情况下,仅对源自Web的请求调用过滤器.内部"包含"和"转发"不会调用它们.要更改默认行为并调用过滤器,您必须在web.xml的filter-mapping元素中指定它

<filter-mapping>
   <filter-name>myfilter</filter-name>
   <url-pattern>/secure</url-pattern>
   <dispatcher>FORWARD</dispatcher>
   <dispatcher>INCLUDE</dispatcher>
   <dispatcher>REQUEST</dispatcher>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)