当前位置: 首页 > 面试题库 >

从REST Web服务的Servlet之前调用过滤器

孔驰
2023-03-14
问题内容

我已经编写了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>";
}

}`

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


问题答案:

HeaderFilter和SampleServlet的URL模式为/ secure。现在的问题是没有调用HeaderFilter,而是直接调用了“
SampleServlet”。

默认情况下,仅针对来自网络的请求调用过滤器。不会为内部“包含”和“转发”调用它们。要更改默认行为并调用过滤器,您必须在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>


 类似资料:
  • 我正在研究一个合作医疗系统。 我的代码在url调用的servlet的

  • 我将在一个已经存在的网站中介绍Spring Web Security。现在出现了一个问题: 我希望我的自定义筛选器在Spring Security筛选器链之前在Tomcat筛选器链中执行。我不想让他们成为这个Spring安全过滤器链的一部分。 我所找到的只是Spring Boot中的一个解决方案(请参见“Spring-How to insert a filter before SpringSecu

  • 我已将过滤器配置如下,但在Spring Security Filter链之前不会调用它。我已将顺序设置为零 我使用的是Spring Boot 1.3,它支持在过滤器上设置顺序

  • 大家好,我正在开发一个web应用程序,在调用web中提到的Servelet时遇到了问题。xml。 这是我的web.xml 问题是,当我试图运行我的应用程序时,我希望先运行身份验证过滤器,然后再运行文件Servelet。现在发生的事情与我想要的正好相反。我也尝试过使用0作为文件Servelet,但没有帮助。下面提到的是我的过滤器类代码。 下面是我的Servlet部分代码: 下面是我在应用程序日志中获

  • 我使用Atmosphere 1.0.15在Tomcat下处理推送通知,几年来一直运行良好。最近,我在Tomcat中添加了一个简单的过滤器作为测试,它(目前)只记录传入的URL并继续。问题在于,Tomcat似乎根本不会对my Atmosphere处理的任何servlet路径调用过滤器,但对任何其他servlet路径调用过滤器都很好。 以下是我网站的相关部分。xml: 这就是我的氛围。xml: 奇怪的

  • 问题内容: 我创建了一个 Servlet过滤器 来处理会话超时和身份验证。 我要过滤的页面具有以下模式:,。还会针对资源(css,js和图像)调用过滤器。如何配置 urlPatterns 以排除筛选这些资源? EDIT1 以下是一些经过过滤的网址: 我在文件夹下有一些自定义css / js文件,但是这些文件不是从那里开始的。 该部分来自: EDIT2 这些代码示例来自使用JSF 2.0,Prime