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
HttpServletResponsewrapper 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 voidcopyBodyToResponse()Copy the complete cached body content to the response.protected voidcopyBodyToResponse(boolean complete)Copy the cached body content to the response.voidflushBuffer()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.InputStreamgetContentInputStream()Return anInputStreamto the cached content.intgetContentSize()Return the current size of the cached content.ServletOutputStreamgetOutputStream()The default behavior of this method is to return getOutputStream() on the wrapped response object.intgetStatusCode()Deprecated.as of 5.2 in favor ofHttpServletResponse.getStatus()PrintWritergetWriter()The default behavior of this method is to return getWriter() on the wrapped response object.voidreset()The default behavior of this method is to call reset() on the wrapped response object.voidresetBuffer()The default behavior of this method is to call resetBuffer() on the wrapped response object.voidsendError(int sc)The default behavior of this method is to call sendError(int sc) on the wrapped response object.voidsendError(int sc, String msg)The default behavior of this method is to call sendError(int sc, String msg) on the wrapped response object.voidsendRedirect(String location)The default behavior of this method is to return sendRedirect(String location) on the wrapped response object.voidsetBufferSize(int size)The default behavior of this method is to call setBufferSize(int size) on the wrapped response object.voidsetContentLength(int len)The default behavior of this method is to call setContentLength(int len) on the wrapped response object.voidsetContentLengthLong(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.HttpServletResponseWrapperThe default behavior of this method is to call sendError(int sc) on the wrapped response object.- Specified by:
sendErrorin interfaceHttpServletResponse- Overrides:
sendErrorin 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.HttpServletResponseWrapperThe default behavior of this method is to call sendError(int sc, String msg) on the wrapped response object.- Specified by:
sendErrorin interfaceHttpServletResponse- Overrides:
sendErrorin 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.HttpServletResponseWrapperThe default behavior of this method is to return sendRedirect(String location) on the wrapped response object.- Specified by:
sendRedirectin interfaceHttpServletResponse- Overrides:
sendRedirectin 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.ServletResponseWrapperThe default behavior of this method is to return getOutputStream() on the wrapped response object.- Specified by:
getOutputStreamin interfaceServletResponse- Overrides:
getOutputStreamin classServletResponseWrapper- Returns:
- a
ServletOutputStreamfor 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.ServletResponseWrapperThe default behavior of this method is to return getWriter() on the wrapped response object.- Specified by:
getWriterin interfaceServletResponse- Overrides:
getWriterin classServletResponseWrapper- Returns:
- a
PrintWriterobject that can return character data to the client - Throws:
UnsupportedEncodingException- if the character encoding returned bygetCharacterEncodingcannot 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.ServletResponseWrapperThe default behavior of this method is to call flushBuffer() on the wrapped response object.- Specified by:
flushBufferin interfaceServletResponse- Overrides:
flushBufferin 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.ServletResponseWrapperThe default behavior of this method is to call setContentLength(int len) on the wrapped response object.- Specified by:
setContentLengthin interfaceServletResponse- Overrides:
setContentLengthin 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.ServletResponseWrapperThe default behavior of this method is to call setContentLengthLong(long len) on the wrapped response object.- Specified by:
setContentLengthLongin interfaceServletResponse- Overrides:
setContentLengthLongin 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.ServletResponseWrapperThe default behavior of this method is to call setBufferSize(int size) on the wrapped response object.- Specified by:
setBufferSizein interfaceServletResponse- Overrides:
setBufferSizein 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.ServletResponseWrapperThe default behavior of this method is to call resetBuffer() on the wrapped response object.- Specified by:
resetBufferin interfaceServletResponse- Overrides:
resetBufferin classServletResponseWrapper- See Also:
ServletResponse.setBufferSize(int),ServletResponse.getBufferSize(),ServletResponse.isCommitted(),ServletResponse.reset()
reset
public void reset()
Description copied from class:javax.servlet.ServletResponseWrapperThe default behavior of this method is to call reset() on the wrapped response object.- Specified by:
resetin interfaceServletResponse- Overrides:
resetin 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 anInputStreamto 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