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

Sim*_*mar 4 java servlets servlet-filters

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

request.getRequestDispatcher("Login.jsp").forward(request, response);
Run Code Online (Sandbox Code Playgroud)

我有一个servlet过滤器,下面是url-pattern

<filter-mapping>
    <filter-name>some_filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)

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

在我的情况下,它不会来,这是一个预期的行为.只想了解这一点.

Ram*_*PVK 12

如果要为转发请求调用过滤器映射,则必须将其放在web.xml中

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

<filter-mapping>
  <filter-name>myfilter</filter-name>
  <url-pattern>/mypath/*</url-pattern>
  <dispatcher>FORWARD</dispatcher>
  <dispatcher>REQUEST</dispatcher>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)

调度程序支持的值是:

  • 请求:请求直接来自客户端.这由<dispatcher>具有值的元素REQUEST或缺少任何<dispatcher>元素指示.

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

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

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

  • ASYNC:正在使用"异步处理"中指定的异步上下文分派机制使用调度调用将请求处理到Web组件.这由<dispatcher>具有值的元素指示ASYNC.