【发布时间】:2012-02-17 21:29:43
【问题描述】:
如何编写一个过滤器类来将响应与 GET 参数一起从一个 servlet 传递到另一个?
这是我尝试过的大纲(大部分来自this question)
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class TranslateFilter implements Filter {
private FilterConfig config = null;
public void init(FilterConfig config) throws ServletException {
this.config = config;
}
public void destroy() {
config = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
chain.doFilter(request, response);
..
RequestDispatcher dispatch = request.getRequestDispatcher("/Translate");
dispatch.forward(request, response);
..
}
}
这个在 web.xml 中
<servlet-mapping>
<servlet-name>process</servlet-name>
<url-pattern>/Process
</servlet-mapping>
<servlet-mapping>
<servlet-name>translate</servlet-name>
<url-pattern>/Translate
</servlet-mapping>
<filter-mapping>
<filter-name>processChain</filter-name>
<servlet-name>process</servlet-name>
</filter-mapping>
但它不起作用。它不会转发到第二个 servlet。我没有调试环境设置,所以我不知道它在哪里失败,但有人能指出我正确的方向吗?
【问题讨论】:
-
chain.doFilter(request, response);这是有条件的吗? -
@JigarJoshi 你问它是否返回布尔值?
-
您为什么不将此作为原始问题的一部分发布?您省略了我提供的答案的一些重要细节,即您应该传递一个充当缓冲区而不是原始响应对象的响应包装器。
-
@kschneid 以前我没有意识到使用过滤器可以解决我的问题;我的第一个问题非常笼统。我试图实现过滤器,但我还没有完成。在这篇文章中,我试图获得一些关于实现过滤器的答案。
标签: java tomcat servlets servlet-filters