从REST Webservice调用Servlet之前的filter

我编写了一个REST Web服务方法setToken(@Context HttpServletRequest request, @Context HttpServletResponse response, @PathParam("token") String token)HeaderFilterSampleServlet 。 下面是Web服务类`@Path(“/ service”)public class 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 ""+ ""+value+" token value"+"" + ""; } 

}`

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

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

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

  myfilter /secure FORWARD INCLUDE REQUEST