【发布时间】:2012-08-18 16:34:42
【问题描述】:
我有一个 JSF (IceFaces 1.8.2) 网站。我需要以下功能: 当显示特定的 JSF 页面时,我想将其 HTML 代码存储在数据库中。我尝试使用 Servlet 过滤器来捕获代码(使用 HttpResponseWrapper 对象,因为它写在 SUN 网页和许多教程中),但响应总是空的。有人可以帮帮我吗?
这里是doFilter:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
Wrapper responseWrapper = new Wrapper((HttpServletResponse)response);
chain.doFilter(request, responseWrapper);
//I just want the output on stdout at the moment...
System.out.println(responseWrapper.toString());
PrintWriter out = response.getWriter();
out.write(responseWrapper.toString());
}
这是包装器:
public class Wrapper extends HttpServletResponseWrapper{
private CharArrayWriter writer;
public Wrapper(HttpServletResponse response){
super(response);
writer = new CharArrayWriter();
}
public PrintWriter getWriter(){
return (new PrintWriter(writer));
}
public String toString(){
return writer.toString();
}
public char[] toCharArray(){
return (writer.toCharArray());
}
}
还有 web.xml:
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>foo.myfilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>*.iface</url-pattern>
</filter-mapping>
【问题讨论】:
-
可能你的代码有bug,请贴出你的工作给你更好的指导。
-
不要在 cmets 中发布代码。编辑您的问题并在那里添加代码。不用担心格式,任何人都可以编辑它,直到您了解 SO 的基础知识。
标签: java html jsf servlet-filters