HttpServletResponse


response.getWriter().print("hogehoge");
した後のresponseの内容を取りたい。
やりたいことは、ServletFilterでIN/OUTの値をログに落としたい。
誰か良い方法知りませんか?
※パケットキャプチャは無しで

  • Wrapper側


public class ResponseWrapper extends HttpServletResponseWrapper {

private final CharArrayWriter writer = new CharArrayWriter();

public ResponseWrapper(HttpServletResponse response) {
super(response);
}

public PrintWriter getWriter() throws IOException {
return new PrintWriter(writer);
}

public String toString() {
return writer.toString();
}
}

  • Filter側 doFilter部


public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {

ResponseWrapper wrapper = new ResponseWrapper((HttpServletResponse)res);

chain.doFilter(req,wrapper);

String resStr = wrapper.toString();

res.getWriter().print(resStr);

}

追記
できました。
手元にソースが無いので明日書きます。