Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Servlets 从另一个servlet调用servlet过滤器_Servlets_Servlet Filters_Requestdispatcher - Fatal编程技术网

Servlets 从另一个servlet调用servlet过滤器

Servlets 从另一个servlet调用servlet过滤器,servlets,servlet-filters,requestdispatcher,Servlets,Servlet Filters,Requestdispatcher,我正在做CMS 我的代码在url“/market”调用的servlet的doGet()函数中。我想要一个HttpServletRequestWrapper,它将通过为url“/page”设置的所有过滤器 我希望这些过滤器会更新请求,以便注释处理器稍后可以使用正确的值注入依赖项 我在Tomcat服务器中,所以我应该能够强制转换到正确的特殊对象,而不必遵从其他服务器 一个相关的问题是使用req.getRequestDispatcher(path).forward(requestWrapper,res

我正在做CMS

我的代码在url
“/market”
调用的servlet的
doGet()函数中。我想要一个
HttpServletRequestWrapper
,它将通过为url
“/page”
设置的所有过滤器

我希望这些过滤器会更新请求,以便注释处理器稍后可以使用正确的值注入依赖项

我在Tomcat服务器中,所以我应该能够强制转换到正确的特殊对象,而不必遵从其他服务器

一个相关的问题是使用
req.getRequestDispatcher(path).forward(requestWrapper,responseWrapper),我希望调用过滤器。应该吗?
javadoc说:

此方法允许一个servlet对 请求


默认情况下,过滤器仅映射到
请求
调度程序。下面是过滤器映射的示例

<filter-mapping>
    <filter-name>yourFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
请注意,您需要在此处显式指定
请求
调度程序,否则它将假定您完全覆盖它,并且只对
转发
调度程序感兴趣

在过滤器内部,如果您想区分
请求
转发
,那么您可以通过确定是否存在以

<filter-mapping>
    <filter-name>yourFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>
<filter-mapping>
    <filter-name>yourFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>
String forwardRequestURI = (String) request.getAttribute(RequestDispatcher.FORWARD_REQUEST_URI);

if (forwardRequestURI != null) {
    // Forward was triggered on the given URI.
}