Package org.springframework.web.util
Class ContentCachingResponseWrapper
- java.lang.Object
- javax.servlet.ServletResponseWrapper
- javax.servlet.http.HttpServletResponseWrapper
- org.springframework.web.util.ContentCachingResponseWrapper
- All Implemented Interfaces:
HttpServletResponse
,ServletResponse
public class ContentCachingResponseWrapper extends HttpServletResponseWrapper
HttpServletResponse
wrapper that caches all content written to the output stream and writer, and allows this content to be retrieved via abyte array
.Used e.g. by
ShallowEtagHeaderFilter
. Note: As of Spring Framework 5.0, this wrapper is built on the Servlet 3.1 API.- Since:
- 4.1.3
- Author:
- Juergen Hoeller
- See Also:
ContentCachingRequestWrapper
Field Summary
Fields inherited from interface javax.servlet.http.HttpServletResponse
SC_ACCEPTED, SC_BAD_GATEWAY, SC_BAD_REQUEST, SC_CONFLICT, SC_CONTINUE, SC_CREATED, SC_EXPECTATION_FAILED, SC_FORBIDDEN, SC_FOUND, SC_GATEWAY_TIMEOUT, SC_GONE, SC_HTTP_VERSION_NOT_SUPPORTED, SC_INTERNAL_SERVER_ERROR, SC_LENGTH_REQUIRED, SC_METHOD_NOT_ALLOWED, SC_MOVED_PERMANENTLY, SC_MOVED_TEMPORARILY, SC_MULTIPLE_CHOICES, SC_NO_CONTENT, SC_NON_AUTHORITATIVE_INFORMATION, SC_NOT_ACCEPTABLE, SC_NOT_FOUND, SC_NOT_IMPLEMENTED, SC_NOT_MODIFIED, SC_OK, SC_PARTIAL_CONTENT, SC_PAYMENT_REQUIRED, SC_PRECONDITION_FAILED, SC_PROXY_AUTHENTICATION_REQUIRED, SC_REQUEST_ENTITY_TOO_LARGE, SC_REQUEST_TIMEOUT, SC_REQUEST_URI_TOO_LONG, SC_REQUESTED_RANGE_NOT_SATISFIABLE, SC_RESET_CONTENT, SC_SEE_OTHER, SC_SERVICE_UNAVAILABLE, SC_SWITCHING_PROTOCOLS, SC_TEMPORARY_REDIRECT, SC_UNAUTHORIZED, SC_UNSUPPORTED_MEDIA_TYPE, SC_USE_PROXY
Constructor Summary
Constructors Constructor Description ContentCachingResponseWrapper(HttpServletResponse response)
Create a new ContentCachingResponseWrapper for the given servlet response.
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
copyBodyToResponse()
Copy the complete cached body content to the response.protected void
copyBodyToResponse(boolean complete)
Copy the cached body content to the response.void
flushBuffer()
The default behavior of this method is to call flushBuffer() on the wrapped response object.byte[]
getContentAsByteArray()
Return the cached response content as a byte array.InputStream
getContentInputStream()
Return anInputStream
to the cached content.int
getContentSize()
Return the current size of the cached content.ServletOutputStream
getOutputStream()
The default behavior of this method is to return getOutputStream() on the wrapped response object.int
getStatusCode()
Deprecated.as of 5.2 in favor ofHttpServletResponse.getStatus()
PrintWriter
getWriter()
The default behavior of this method is to return getWriter() on the wrapped response object.void
reset()
The default behavior of this method is to call reset() on the wrapped response object.void
resetBuffer()
The default behavior of this method is to call resetBuffer() on the wrapped response object.void
sendError(int sc)
The default behavior of this method is to call sendError(int sc) on the wrapped response object.void
sendError(int sc, String msg)
The default behavior of this method is to call sendError(int sc, String msg) on the wrapped response object.void
sendRedirect(String location)
The default behavior of this method is to return sendRedirect(String location) on the wrapped response object.void
setBufferSize(int size)
The default behavior of this method is to call setBufferSize(int size) on the wrapped response object.void
setContentLength(int len)
The default behavior of this method is to call setContentLength(int len) on the wrapped response object.void
setContentLengthLong(long len)
The default behavior of this method is to call setContentLengthLong(long len) on the wrapped response object.Methods inherited from class javax.servlet.http.HttpServletResponseWrapper
addCookie, addDateHeader, addHeader, addIntHeader, containsHeader, encodeRedirectUrl, encodeRedirectURL, encodeUrl, encodeURL, getHeader, getHeaderNames, getHeaders, getStatus, getTrailerFields, setDateHeader, setHeader, setIntHeader, setStatus, setStatus, setTrailerFields
Methods inherited from class javax.servlet.ServletResponseWrapper
getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isCommitted, isWrapperFor, isWrapperFor, setCharacterEncoding, setContentType, setLocale, setResponse
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface javax.servlet.ServletResponse
getBufferSize, getCharacterEncoding, getContentType, getLocale, isCommitted, setCharacterEncoding, setContentType, setLocale
Constructor Detail
ContentCachingResponseWrapper
public ContentCachingResponseWrapper(HttpServletResponse response)
Create a new ContentCachingResponseWrapper for the given servlet response.- Parameters:
response
- the original servlet response
Method Detail
sendError
public void sendError(int sc) throws IOException
Description copied from class:javax.servlet.http.HttpServletResponseWrapper
The default behavior of this method is to call sendError(int sc) on the wrapped response object.- Specified by:
sendError
in interfaceHttpServletResponse
- Overrides:
sendError
in classHttpServletResponseWrapper
- Parameters:
sc
- the error status code- Throws:
IOException
- If an input or output exception occurs
sendError
public void sendError(int sc, String msg) throws IOException
Description copied from class:javax.servlet.http.HttpServletResponseWrapper
The default behavior of this method is to call sendError(int sc, String msg) on the wrapped response object.- Specified by:
sendError
in interfaceHttpServletResponse
- Overrides:
sendError
in classHttpServletResponseWrapper
- Parameters:
sc
- the error status codemsg
- the descriptive message- Throws:
IOException
- If an input or output exception occurs
sendRedirect
public void sendRedirect(String location) throws IOException
Description copied from class:javax.servlet.http.HttpServletResponseWrapper
The default behavior of this method is to return sendRedirect(String location) on the wrapped response object.- Specified by:
sendRedirect
in interfaceHttpServletResponse
- Overrides:
sendRedirect
in classHttpServletResponseWrapper
- Parameters:
location
- the redirect location URL- Throws:
IOException
- If an input or output exception occurs
getOutputStream
public ServletOutputStream getOutputStream() throws IOException
Description copied from class:javax.servlet.ServletResponseWrapper
The default behavior of this method is to return getOutputStream() on the wrapped response object.- Specified by:
getOutputStream
in interfaceServletResponse
- Overrides:
getOutputStream
in classServletResponseWrapper
- Returns:
- a
ServletOutputStream
for writing binary data - Throws:
IOException
- if an input or output exception occurred- See Also:
ServletResponse.getWriter()
,ServletResponse.reset()
getWriter
public PrintWriter getWriter() throws IOException
Description copied from class:javax.servlet.ServletResponseWrapper
The default behavior of this method is to return getWriter() on the wrapped response object.- Specified by:
getWriter
in interfaceServletResponse
- Overrides:
getWriter
in classServletResponseWrapper
- Returns:
- a
PrintWriter
object that can return character data to the client - Throws:
UnsupportedEncodingException
- if the character encoding returned bygetCharacterEncoding
cannot be usedIOException
- if an input or output exception occurred- See Also:
ServletResponse.getOutputStream()
,ServletResponse.setCharacterEncoding(java.lang.String)
,ServletResponse.reset()
flushBuffer
public void flushBuffer() throws IOException
Description copied from class:javax.servlet.ServletResponseWrapper
The default behavior of this method is to call flushBuffer() on the wrapped response object.- Specified by:
flushBuffer
in interfaceServletResponse
- Overrides:
flushBuffer
in classServletResponseWrapper
- Throws:
IOException
- if the act of flushing the buffer cannot be completed.- See Also:
ServletResponse.setBufferSize(int)
,ServletResponse.getBufferSize()
,ServletResponse.isCommitted()
,ServletResponse.reset()
setContentLength
public void setContentLength(int len)
Description copied from class:javax.servlet.ServletResponseWrapper
The default behavior of this method is to call setContentLength(int len) on the wrapped response object.- Specified by:
setContentLength
in interfaceServletResponse
- Overrides:
setContentLength
in classServletResponseWrapper
- Parameters:
len
- an integer specifying the length of the content being returned to the client; sets the Content-Length header
setContentLengthLong
public void setContentLengthLong(long len)
Description copied from class:javax.servlet.ServletResponseWrapper
The default behavior of this method is to call setContentLengthLong(long len) on the wrapped response object.- Specified by:
setContentLengthLong
in interfaceServletResponse
- Overrides:
setContentLengthLong
in classServletResponseWrapper
- Parameters:
len
- a long specifying the length of the content being returned to the client; sets the Content-Length header
setBufferSize
public void setBufferSize(int size)
Description copied from class:javax.servlet.ServletResponseWrapper
The default behavior of this method is to call setBufferSize(int size) on the wrapped response object.- Specified by:
setBufferSize
in interfaceServletResponse
- Overrides:
setBufferSize
in classServletResponseWrapper
- Parameters:
size
- the preferred buffer size- See Also:
ServletResponse.getBufferSize()
,ServletResponse.flushBuffer()
,ServletResponse.isCommitted()
,ServletResponse.reset()
resetBuffer
public void resetBuffer()
Description copied from class:javax.servlet.ServletResponseWrapper
The default behavior of this method is to call resetBuffer() on the wrapped response object.- Specified by:
resetBuffer
in interfaceServletResponse
- Overrides:
resetBuffer
in classServletResponseWrapper
- See Also:
ServletResponse.setBufferSize(int)
,ServletResponse.getBufferSize()
,ServletResponse.isCommitted()
,ServletResponse.reset()
reset
public void reset()
Description copied from class:javax.servlet.ServletResponseWrapper
The default behavior of this method is to call reset() on the wrapped response object.- Specified by:
reset
in interfaceServletResponse
- Overrides:
reset
in classServletResponseWrapper
- See Also:
ServletResponse.setBufferSize(int)
,ServletResponse.getBufferSize()
,ServletResponse.flushBuffer()
,ServletResponse.isCommitted()
getStatusCode
@Deprecated public int getStatusCode()
Deprecated.as of 5.2 in favor ofHttpServletResponse.getStatus()
Return the status code as specified on the response.
getContentAsByteArray
public byte[] getContentAsByteArray()
Return the cached response content as a byte array.
getContentInputStream
public InputStream getContentInputStream()
Return anInputStream
to the cached content.- Since:
- 4.2
getContentSize
public int getContentSize()
Return the current size of the cached content.- Since:
- 4.2
copyBodyToResponse
public void copyBodyToResponse() throws IOException
Copy the complete cached body content to the response.- Throws:
IOException
- Since:
- 4.2
copyBodyToResponse
protected void copyBodyToResponse(boolean complete) throws IOException
Copy the cached body content to the response.- Parameters:
complete
- whether to set a corresponding content length for the complete cached body content- Throws:
IOException
- Since:
- 4.2