|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.wms.common.security; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.servlet.ServletOutputStream; | 
|---|
|  |  |  | import javax.servlet.WriteListener; | 
|---|
|  |  |  | import javax.servlet.http.HttpServletResponse; | 
|---|
|  |  |  | import javax.servlet.http.HttpServletResponseWrapper; | 
|---|
|  |  |  | import java.io.ByteArrayOutputStream; | 
|---|
|  |  |  | import java.io.PrintWriter; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public class CachedBodyHttpServletResponse extends HttpServletResponseWrapper { | 
|---|
|  |  |  | private final ByteArrayOutputStream cachedBody; | 
|---|
|  |  |  | private final PrintWriter writer; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public CachedBodyHttpServletResponse(HttpServletResponse response) { | 
|---|
|  |  |  | super(response); | 
|---|
|  |  |  | this.cachedBody = new ByteArrayOutputStream(); | 
|---|
|  |  |  | this.writer = new PrintWriter(cachedBody); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public PrintWriter getWriter() { | 
|---|
|  |  |  | return writer; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public ServletOutputStream getOutputStream() { | 
|---|
|  |  |  | return new ServletOutputStream() { | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void write(int b) { | 
|---|
|  |  |  | cachedBody.write(b); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public boolean isReady() { | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void setWriteListener(WriteListener writeListener) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public byte[] getContent() { | 
|---|
|  |  |  | writer.flush(); | 
|---|
|  |  |  | return cachedBody.toByteArray(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | package com.zy.asrs.wms.common.security; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.servlet.ServletOutputStream; | 
|---|
|  |  |  | import javax.servlet.WriteListener; | 
|---|
|  |  |  | import javax.servlet.http.HttpServletResponse; | 
|---|
|  |  |  | import javax.servlet.http.HttpServletResponseWrapper; | 
|---|
|  |  |  | import java.io.ByteArrayOutputStream; | 
|---|
|  |  |  | import java.io.PrintWriter; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public class CachedBodyHttpServletResponse extends HttpServletResponseWrapper { | 
|---|
|  |  |  | private final ByteArrayOutputStream cachedBody; | 
|---|
|  |  |  | private final PrintWriter writer; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public CachedBodyHttpServletResponse(HttpServletResponse response) { | 
|---|
|  |  |  | super(response); | 
|---|
|  |  |  | this.cachedBody = new ByteArrayOutputStream(); | 
|---|
|  |  |  | this.writer = new PrintWriter(cachedBody); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public PrintWriter getWriter() { | 
|---|
|  |  |  | return writer; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public ServletOutputStream getOutputStream() { | 
|---|
|  |  |  | return new ServletOutputStream() { | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void write(int b) { | 
|---|
|  |  |  | cachedBody.write(b); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public boolean isReady() { | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void setWriteListener(WriteListener writeListener) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public byte[] getContent() { | 
|---|
|  |  |  | writer.flush(); | 
|---|
|  |  |  | return cachedBody.toByteArray(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|