MyHttpServletResponseWrapper.java 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package com.nokia.financeapi.config.web;
  2. import javax.servlet.ServletOutputStream;
  3. import javax.servlet.WriteListener;
  4. import javax.servlet.http.HttpServletResponse;
  5. import javax.servlet.http.HttpServletResponseWrapper;
  6. import java.io.ByteArrayOutputStream;
  7. import java.io.IOException;
  8. /**
  9. * 解决流只能读取一次问题
  10. */
  11. public class MyHttpServletResponseWrapper extends HttpServletResponseWrapper {
  12. private ByteArrayOutputStream byteArrayOutputStream;
  13. private ServletOutputStream servletOutputStream;
  14. public MyHttpServletResponseWrapper(HttpServletResponse response) {
  15. super(response);
  16. byteArrayOutputStream = new ByteArrayOutputStream();
  17. servletOutputStream = new ServletOutputStream() {
  18. @Override
  19. public boolean isReady() {
  20. return false;
  21. }
  22. @Override
  23. public void setWriteListener(WriteListener writeListener) {
  24. //
  25. }
  26. @Override
  27. public void write(int b) throws IOException {
  28. response.getOutputStream().write(b);
  29. byteArrayOutputStream.write(b);
  30. }
  31. };
  32. }
  33. @Override
  34. public ServletOutputStream getOutputStream() {
  35. return servletOutputStream;
  36. }
  37. public byte[] toByteArray() {
  38. return byteArrayOutputStream.toByteArray();
  39. }
  40. }