【问题标题】:Quiz about java servlet filters, unclear answer关于java servlet过滤器的测验,答案不清楚
【发布时间】:2017-05-18 08:43:27
【问题描述】:

我正在处理一个关于 java servlet 过滤器的不清楚的问题。

问题是:

给定一个具有以下结构的war文件

| – WEB-INF/classes/Myservlet.class
| – WEB-INF/lib/wf.jar

其中 wf.jar 包含有效的 web-fragment.xml 和以下两个类:MyFilter1.class 和 MyFiler2.class。 web-fragment.xml如下

以下是一些sn-ps的代码:

当访问上述web应用的“/”时,会执行哪些过滤器?

A. 不会执行任何过滤器。

B. 我的过滤器1

C. 我的过滤器2

D. MyFilter1 和 MyFilter2

我敢打赌,正确的答案是 D(两个过滤器),但解决方案说正确的答案是 C(没有任何解释)。 为什么只执行 MyFilter2?

谢谢

【问题讨论】:

    标签: java servlets


    【解决方案1】:

    web-fragment.xml 具有metadata-complete=true,因此不评估 jar 中类上的注释,仅注册片段中定义的 MyFilter2

    【讨论】:

      【解决方案2】:

      这取决于您是否在第一个过滤器中执行了chain.doFilter(request,response),如果您将其链接到第二个过滤器,则它不会。

      请注意,如果使用相同的名称定义描述符,则描述符比注释具有更高的优先级。这适用于 servlet 和过滤器。

      如果您尝试使用“/”访问 URL,它将首先点击 MyFilter2。

      【讨论】:

      • 感谢您的回答,所以问题不涉及chain.doFilter 那么只会执行MyFilter2?不是吗?
      • 编辑了我的答案,检查一次
      猜你喜欢
      • 1970-01-01
      • 2016-03-25
      • 2014-11-07
      • 2011-06-29
      • 2020-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多