package com.doumee.core.servlet; import javax.servlet.ServletOutputStream; import javax.servlet.WriteListener; import java.io.ByteArrayOutputStream; import java.io.IOException; /** * 包含副本的输出流 * @author Eva.Caesar Liu * @date 2023/03/21 14:49 */ public class ServletDuplicateOutputStream extends ServletOutputStream { private ServletOutputStream stream; private ByteArrayOutputStream duplicate; public ServletDuplicateOutputStream(ServletOutputStream servletOutputStream) { this.stream = servletOutputStream; this.duplicate = new ByteArrayOutputStream(); } @Override public boolean isReady() { return stream.isReady(); } @Override public void setWriteListener(WriteListener writeListener) { stream.setWriteListener(writeListener); } @Override public void write(byte[] b) throws IOException { stream.write(b); duplicate.write(b); } @Override public void write(byte[] b, int off, int len) throws IOException { stream.write(b, off, len); duplicate.write(b, off, len); } @Override public void flush() throws IOException { stream.flush(); duplicate.flush(); } @Override public void close() throws IOException { stream.close(); duplicate.close(); } @Override public void write(int b) throws IOException { stream.write(b); duplicate.write(b); } public String getContent() { return duplicate.toString(); } }