Servlets 从另一个servlet调用servlet过滤器
我正在做CMS 我的代码在urlServlets 从另一个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
“/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.
}