java - Servlet 过滤器 - 来自 servlet 的转发请求是否会进入 servlet 过滤器?

标签 java servlets servlet-filters

如果任何 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>

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

在我的情况下,它不会出现,这是预期的行为吗?只是想了解这一点。

最佳答案

如果你想为转发请求调用过滤器映射,你必须把它放在 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:请求直接来自客户端。这由 <dispatcher> 表示具有值的元素 REQUEST , 或由 没有任何 <dispatcher>元素。

  • FORWARD:请求正在代表与 <url-pattern> 匹配的 Web 组件的请求调度程序下处理或 <servlet-name>使用 forward()称呼。 这由 <dispatcher> 表示具有值的元素 FORWARD .

  • INCLUDE:请求正在代表与 <url-pattern> 匹配的 Web 组件的请求调度程序下处理或 <servlet-name>使用 include()称呼。 这由 <dispatcher> 表示具有值的元素 INCLUDE .

  • ERROR:正在使用“错误处理”中指定的错误页面机制处理的请求到与 <url-pattern> 匹配的错误资源.这由 <dispatcher> 表示值为 ERROR 的元素.

  • ASYNC:正在使用“异步处理”中指定的异步上下文分派(dispatch)机制对使用分派(dispatch)调用的 Web 组件处理请求。 这由 <dispatcher> 表示值为 ASYNC 的元素.

关于java - Servlet 过滤器 - 来自 servlet 的转发请求是否会进入 servlet 过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31065687/

相关文章:

Java、Apache Commons 配置 XML 属性

java - 无法从我的 Android 模拟器连接到本地 Web 服务

java - Apache camel 和 kafka 集成

java - 从另一个 servlet 调用 servlet 的 service()

XSS 过滤器以 enctype ="multipart/form-data"形式

java - 对动态 URL 应用过滤器

java - Spring过滤器抛出自定义异常

java - 并发 SQS 队列监听器

java - 多个 servlet,或仅一个主 Controller

java - 如何避免线程中出现 HeadlessException?