I want to save to a DB the HTML generated by an outcome .
I've search for it but I'm lost, I don't know how to start :S.
Does somebody know a way to capture that HTML?
Thx.
I want to save to a DB the HTML generated by an outcome .
I've search for it but I'm lost, I don't know how to start :S.
Does somebody know a way to capture that HTML?
Thx.
I think that you can use ServletFilter,HttpServletResponse wrapper and PrintWriter wrapper.
1.create java.io.Printwriter subclass
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));
}
}
Please override other methods, if you need.
2.create HttpServletResponse wrapper class
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.create ServletFilter and use wrapper
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.add filter setting to 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>