Servletfilter – 来自servlet的转发请求是否会转到servletfilter?

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

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

我有一个servletfilter,下面是url-pattern

  some_filter /*  

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

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

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

自Servlet2.4以来,这种支持就在那里

  myfilter /mypath/* FORWARD REQUEST  

调度程序支持的值为:

  • 请求 :请求直接来自客户端。 这由带有值REQUEST元素指示,或者由缺少任何元素指示。

  • FORWARD :请求正在一个请求调度程序下处理,该请求调度使用forward()调用表示与匹配的Web组件。 这由值为FORWARD元素指示。

  • INCLUDE :请求正在一个请求调度程序下处理,该请求调度使用include()调用表示与匹配的Web组件。 这由值为INCLUDE元素指示。

  • 错误 :正在使用“error handling”中指定的错误页面机制处理与匹配的错误资源的请求。 这由值为ERROR元素指示。

  • ASYNC :正在使用“异步处理”中指定的异步上下文分派机制使用调度调用将请求处理到Web组件。 这由值为ASYNC元素指示。

不,servletfilter不会再次被击中。 转发发生在容器内部,因此链条会:

ServletFilter (if any) -> Servlet -> (JSP)

如果您要执行重定向,filter(具有适当的配置)将被命中,但这很可能不是您想要的。