【问题标题】:Servlet Filter - forwarded request from a servlet will go to servlet filter or not?Servlet 过滤器 - 来自 servlet 的转发请求是否会转到 servlet 过滤器?
【发布时间】:2015-09-12 23:10:12
【问题描述】:

如果任何J2EE 应用程序直接命中servlet,然后servlet 将相同的请求转发到某个.jsp 页面。

request.getRequestDispatcher("Login.jsp").forward(request, response);

我有一个带有以下 url-pattern 的 servlet 过滤器

<filter-mapping>
    <filter-name>some_filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

那么,转发的请求是否也会过滤。

就我而言,它不会出现,这是预期的行为吗?只是想明白这一点。

【问题讨论】:

  • 为什么要投反对票...?这个问题没有意义吗?

标签: java servlets servlet-filters


【解决方案1】:

如果你想为转发请求调用过滤器映射,你必须把它放在 web.xml 中

从 Servlet2.4 开始就有这种支持

<filter-mapping>
  <filter-name>myfilter</filter-name>
  <url-pattern>/mypath/*</url-pattern>
  <dispatcher>FORWARD</dispatcher>
  <dispatcher>REQUEST</dispatcher>
</filter-mapping>

调度程序支持的值为:

  • REQUEST:请求直接来自客户端。这由值为REQUEST&lt;dispatcher&gt; 元素或由 没有任何&lt;dispatcher&gt; 元素。

  • FORWARD:该请求正在请求调度程序下处理,该调度程序表示使用forward() 调用匹配&lt;url-pattern&gt;&lt;servlet-name&gt; 的Web 组件。 这由具有值FORWARD&lt;dispatcher&gt; 元素指示。

  • INCLUDE:请求调度程序正在处理请求,该请求调度程序表示使用include() 调用匹配&lt;url-pattern&gt;&lt;servlet-name&gt; 的Web 组件。 这由具有值INCLUDE&lt;dispatcher&gt; 元素指示。

  • ERROR:正在使用“错误处理”中指定的错误页面机制处理对匹配&lt;url-pattern&gt; 的错误资源的请求。这由具有值ERROR&lt;dispatcher&gt; 元素指示。

  • ASYNC:正在使用“异步处理”中指定的异步上下文分派机制处理请求,并使用分派调用发送到 Web 组件。 这由具有值ASYNC&lt;dispatcher&gt; 元素指示。

【讨论】:

  • 谢谢...它对我有用。这些都是可能的值?
  • 是的。 @麦克风。这些都是可能的值。
  • 所以REQUEST是默认值
猜你喜欢
  • 2018-05-25
  • 1970-01-01
  • 2018-04-14
  • 2013-04-12
  • 1970-01-01
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
  • 2014-09-13
相关资源
最近更新 更多