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