【问题标题】:Why write a servlet filter for a DispatcherType other than REQUEST?为什么要为除 REQUEST 之外的 DispatcherType 编写 servlet 过滤器?
【发布时间】:2023-04-01 15:24:01
【问题描述】:

在我做各种事情的时候,我见过很多 servlet 过滤器,但总是在 REQUEST 上,从来没有其他任何事情。有没有人有任何用例或示例说明为什么为 REQUEST 之外的另一个 dispatcherType 编写 servlet 过滤器可能有用?

在 javax.servlet 包中的 DispatcherTypes。

public enum DispatcherType {
  FORWARD, INCLUDE, REQUEST, ASYNC, ERROR
}

【问题讨论】:

标签: java servlet-filters


【解决方案1】:

嗯,这些名字是不言自明的。 REQUEST 确实是最常用的一种,它应用于传入的请求链。这是您可能需要使用其他过滤器的时候(因为不会应用 REQUEST 仅调度的过滤器):

  • FORWARD - 如果您想在一个 servlet 将请求转发到另一个 servlet 时过滤请求/响应。这通常在 servlet 转发到 JSP 页面时使用。
  • INCLUDE - 如果您想在一个 servlet 调用另一个 servlet 时过滤请求/响应,以便将其响应包含在自己的响应中。这通常在 JSP 页面包含 JSP 页面时使用。
  • ASYNC - 这是我个人从未使用过的东西,但 AFAIK 需要能够过滤 Servlet 3 规范中引入的异步请求
  • 错误 - 如果您想在 servlet 调用导致错误时过滤请求/响应。

有关更多详细信息,请参阅https://sling.apache.org/documentation/the-sling-engine/filters.html#filter-chains

【讨论】:

    猜你喜欢
    • 2011-11-12
    • 2017-01-13
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 2019-12-16
    • 1970-01-01
    相关资源
    最近更新 更多