Class ContentCachingResponseWrapper
java.lang.Object
jakarta.servlet.ServletResponseWrapper
jakarta.servlet.http.HttpServletResponseWrapper
org.springframework.web.util.ContentCachingResponseWrapper
- All Implemented Interfaces:
jakarta.servlet.http.HttpServletResponse, jakarta.servlet.ServletResponse
public class ContentCachingResponseWrapper
extends jakarta.servlet.http.HttpServletResponseWrapper
HttpServletResponse
wrapper that caches all content written to
the output stream and writer,
and allows this content to be retrieved via a byte array.
Used, for example, by ShallowEtagHeaderFilter
.
- Since:
- 4.1.3
- Author:
- Juergen Hoeller, Sam Brannen
- See Also:
-
Field Summary
Fields inherited from interface jakarta.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_MISDIRECTED_REQUEST, 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_PERMANENT_REDIRECT, 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_UNPROCESSABLE_CONTENT, SC_UNSUPPORTED_MEDIA_TYPE, SC_UPGRADE_REQUIRED, SC_USE_PROXY
-
Constructor Summary
ConstructorsConstructorDescriptionContentCachingResponseWrapper
(jakarta.servlet.http.HttpServletResponse response) Create a new ContentCachingResponseWrapper for the given servlet response. -
Method Summary
Modifier and TypeMethodDescriptionvoid
void
addIntHeader
(String name, int value) boolean
containsHeader
(String name) void
Copy the complete cached body content to the response.protected void
copyBodyToResponse
(boolean complete) Copy the cached body content to the response.void
This method neither flushes content to the client nor commits the underlying response, since the content has not yet been copied to the response.byte[]
Return the cached response content as a byte array.Return anInputStream
to the cached content.int
Return the current size of the cached content.getHeaders
(String name) jakarta.servlet.ServletOutputStream
void
reset()
void
void
sendError
(int sc) void
void
sendRedirect
(String location) void
setBufferSize
(int size) void
setContentLength
(int len) void
setContentLengthLong
(long len) void
void
setIntHeader
(String name, int value) Methods inherited from class jakarta.servlet.http.HttpServletResponseWrapper
addCookie, addDateHeader, encodeRedirectURL, encodeURL, getStatus, getTrailerFields, sendRedirect, sendRedirect, sendRedirect, setDateHeader, setStatus, setTrailerFields
Methods inherited from class jakarta.servlet.ServletResponseWrapper
getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isCommitted, isWrapperFor, isWrapperFor, setCharacterEncoding, setCharacterEncoding, setContentType, setLocale, setResponse
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface jakarta.servlet.ServletResponse
getBufferSize, getCharacterEncoding, getContentType, getLocale, isCommitted, setCharacterEncoding, setCharacterEncoding, setContentType, setLocale
-
Constructor Details
-
ContentCachingResponseWrapper
public ContentCachingResponseWrapper(jakarta.servlet.http.HttpServletResponse response) Create a new ContentCachingResponseWrapper for the given servlet response.- Parameters:
response
- the original servlet response
-
-
Method Details
-
sendError
- Specified by:
sendError
in interfacejakarta.servlet.http.HttpServletResponse
- Overrides:
sendError
in classjakarta.servlet.http.HttpServletResponseWrapper
- Throws:
IOException
-
sendError
- Specified by:
sendError
in interfacejakarta.servlet.http.HttpServletResponse
- Overrides:
sendError
in classjakarta.servlet.http.HttpServletResponseWrapper
- Throws:
IOException
-
sendRedirect
- Specified by:
sendRedirect
in interfacejakarta.servlet.http.HttpServletResponse
- Overrides:
sendRedirect
in classjakarta.servlet.http.HttpServletResponseWrapper
- Throws:
IOException
-
getOutputStream
- Specified by:
getOutputStream
in interfacejakarta.servlet.ServletResponse
- Overrides:
getOutputStream
in classjakarta.servlet.ServletResponseWrapper
- Throws:
IOException
-
getWriter
- Specified by:
getWriter
in interfacejakarta.servlet.ServletResponse
- Overrides:
getWriter
in classjakarta.servlet.ServletResponseWrapper
- Throws:
IOException
-
flushBuffer
This method neither flushes content to the client nor commits the underlying response, since the content has not yet been copied to the response.Invoke
copyBodyToResponse()
to copy the cached body content to the wrapped response object and flush its buffer.- Specified by:
flushBuffer
in interfacejakarta.servlet.ServletResponse
- Overrides:
flushBuffer
in classjakarta.servlet.ServletResponseWrapper
- Throws:
IOException
- See Also:
-
setContentLength
public void setContentLength(int len) - Specified by:
setContentLength
in interfacejakarta.servlet.ServletResponse
- Overrides:
setContentLength
in classjakarta.servlet.ServletResponseWrapper
-
setContentLengthLong
public void setContentLengthLong(long len) - Specified by:
setContentLengthLong
in interfacejakarta.servlet.ServletResponse
- Overrides:
setContentLengthLong
in classjakarta.servlet.ServletResponseWrapper
-
containsHeader
- Specified by:
containsHeader
in interfacejakarta.servlet.http.HttpServletResponse
- Overrides:
containsHeader
in classjakarta.servlet.http.HttpServletResponseWrapper
-
setHeader
-
addHeader
-
setIntHeader
- Specified by:
setIntHeader
in interfacejakarta.servlet.http.HttpServletResponse
- Overrides:
setIntHeader
in classjakarta.servlet.http.HttpServletResponseWrapper
-
addIntHeader
- Specified by:
addIntHeader
in interfacejakarta.servlet.http.HttpServletResponse
- Overrides:
addIntHeader
in classjakarta.servlet.http.HttpServletResponseWrapper
-
getHeader
-
getHeaders
- Specified by:
getHeaders
in interfacejakarta.servlet.http.HttpServletResponse
- Overrides:
getHeaders
in classjakarta.servlet.http.HttpServletResponseWrapper
-
getHeaderNames
- Specified by:
getHeaderNames
in interfacejakarta.servlet.http.HttpServletResponse
- Overrides:
getHeaderNames
in classjakarta.servlet.http.HttpServletResponseWrapper
-
setBufferSize
public void setBufferSize(int size) - Specified by:
setBufferSize
in interfacejakarta.servlet.ServletResponse
- Overrides:
setBufferSize
in classjakarta.servlet.ServletResponseWrapper
-
resetBuffer
public void resetBuffer()- Specified by:
resetBuffer
in interfacejakarta.servlet.ServletResponse
- Overrides:
resetBuffer
in classjakarta.servlet.ServletResponseWrapper
-
reset
public void reset()- Specified by:
reset
in interfacejakarta.servlet.ServletResponse
- Overrides:
reset
in classjakarta.servlet.ServletResponseWrapper
-
getContentAsByteArray
public byte[] getContentAsByteArray()Return the cached response content as a byte array. -
getContentInputStream
-
getContentSize
public int getContentSize()Return the current size of the cached content.- Since:
- 4.2
-
copyBodyToResponse
Copy the complete cached body content to the response.- Throws:
IOException
- Since:
- 4.2
-
copyBodyToResponse
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
-