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(具有适当的配置)将被命中,但这很可能不是您想要的。