我正在使用的代码库在处理响应时调用getOutputStream方法,而不是getWriter,因此其他答案中包含的示例无济于事。如果对写入器进行了两次访问,这是一个更完整的答案,可以同时用于OutputStream和PrintWriter,甚至可以正确地进行错误处理。这是从一个很好的示例中得出的,即使用JAVAX.SERVLET.FILTER进行DUMP请求和响应。
import javax.servlet.*;import javax.servlet.http.*;import java.io.*;public class MyFilter implements Filter{ private FilterConfig filterConfig = null; private static class ByteArrayServletStream extends ServletOutputStream { ByteArrayOutputStream baos; ByteArrayServletStream(ByteArrayOutputStream baos) { this.baos = baos; } public void write(int param) throws IOException { baos.write(param); } } private static class ByteArrayPrintWriter { private ByteArrayOutputStream baos = new ByteArrayOutputStream(); private PrintWriter pw = new PrintWriter(baos); private ServletOutputStream sos = new ByteArrayServletStream(baos); public PrintWriter getWriter() { return pw; }


