-2
A
回答
1
我認爲你可以使用ServletFilter中,HttpServletResponse的包裝和包裝的PrintWriter。
1.創建java.io.PrintWriter中的子類
public class PrintWriterWrapper extends PrintWriter {
public PrintWriterWrapper(Writer out) {
super(out);
}
@Override
public void write(int c) {
super.write(c);
char ch = (char)c;
System.out.println(ch); //<-please change to use DB. and others too.
}
@Override
public void write(char[] buf, int off, int len) {
super.write(buf, off, len);
String str = new String(buf, off, len);
System.out.println(str);
}
@Override
public void write(String s, int off, int len) {
super.write(s, off, len);
System.out.println(s.substring(off, off+len));
}
}
請忽略其他的方法,如果你需要。
2.創建HttpServletResponse的包裝類
public class MyResponseWrapper extends HttpServletResponseWrapper {
public MyResponseWrapper(HttpServletResponse response) {
super(response);
}
@Override
public PrintWriter getWriter() throws IOException {
PrintWriter writer = super.getWriter();
PrintWriterWrapper wrapper = new PrintWriterWrapper(writer);
return wrapper;
}
}
3.創建ServletFilter中,並使用包裝
public class MyFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
MyResponseWrapper wrapper = new MyResponseWrapper((HttpServletResponse)res);
chain.doFilter(req, wrapper);
}
}
4.增加過濾器設置到web.xml
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>hoge.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/faces/*</url-pattern>
</filter-mapping>
沒什麼,我我還在尋找,我不知道如何做到這一點。 – podrick 2014-10-02 11:15:58
我完全失去了 – podrick 2014-10-02 11:16:40
我發現這個帖子http://stackoverflow.com/questions/3323089/capture-generated-html-output-of-jsf-page但它不適合我,因爲我可以' t使用URL – podrick 2014-10-02 11:22:27