在我的应用程序中,我在web.xml中有以下过滤器
<filter>
<filter-name>webServiceFilter</filter-name>
<filter-class>org.bakhtiari.filter.WebServiceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>webServiceFilter</filter-name>
<url-pattern>/webservice/RestEasy/*</url-pattern>
</filter-mapping>
宣布两个调度程序Servlet
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-servlet</servlet-name>
<url-pattern>/webservice/RestEasy/*</url-pattern>
</servlet-mapping>
现在假设一个HTTP请求来到url“/ webservice / RestEasy / redirect / callUserService”。
考虑到我的业务,如果URL的第三部分等于“重定向”,我必须调用URL“/ rest / callUserService”。
考虑到所有这些,我想向“mvc-dispatcher”发送一个带有新URL的请求,并从中检索HTTPServletResponse
。
请注意,我无法使用java.net或类似内容向新URL发送请求,因为我的应用程序在“/ *”URL上有安全过滤器,并且在每个请求中放置身份验证参数会导致服务器上出现大量过载。
答案 0 :(得分:0)
解决方案是
public class WebServiceFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException,
IOException {
if(/* CONDITION */){
RequestDispatcher rd = req.getRequestDispatcher("/rest/callUserService");
rd.forward(req, res);
}
}
}