Package org.springframework.web.util
Class ContentCachingResponseWrapper
java.lang.Object
jakarta.servlet.ServletResponseWrapper
jakarta.servlet.http.HttpServletResponseWrapper
org.springframework.web.util.ContentCachingResponseWrapper
- All Implemented Interfaces:
HttpServletResponse
,ServletResponse
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_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
ConstructorDescriptionCreate 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) 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, setDateHeader, setStatus, setTrailerFields
Methods inherited from class jakarta.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 jakarta.servlet.ServletResponse
getBufferSize, getCharacterEncoding, getContentType, getLocale, isCommitted, setCharacterEncoding, setContentType, setLocale
-
Constructor Details
-
ContentCachingResponseWrapper
Create a new ContentCachingResponseWrapper for the given servlet response.- Parameters:
response
- the original servlet response
-
-
Method Details
-
sendError
- Specified by:
sendError
in interfaceHttpServletResponse
- Overrides:
sendError
in classHttpServletResponseWrapper
- Throws:
IOException
-
sendError
- Specified by:
sendError
in interfaceHttpServletResponse
- Overrides:
sendError
in classHttpServletResponseWrapper
- Throws:
IOException
-
sendRedirect
- Specified by:
sendRedirect
in interfaceHttpServletResponse
- Overrides:
sendRedirect
in classHttpServletResponseWrapper
- Throws:
IOException
-
getOutputStream
- Specified by:
getOutputStream
in interfaceServletResponse
- Overrides:
getOutputStream
in classServletResponseWrapper
- Throws:
IOException
-
getWriter
- Specified by:
getWriter
in interfaceServletResponse
- Overrides:
getWriter
in classServletResponseWrapper
- 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 interfaceServletResponse
- Overrides:
flushBuffer
in classServletResponseWrapper
- Throws:
IOException
- See Also:
-
setContentLength
public void setContentLength(int len) - Specified by:
setContentLength
in interfaceServletResponse
- Overrides:
setContentLength
in classServletResponseWrapper
-
setContentLengthLong
public void setContentLengthLong(long len) - Specified by:
setContentLengthLong
in interfaceServletResponse
- Overrides:
setContentLengthLong
in classServletResponseWrapper
-
containsHeader
- Specified by:
containsHeader
in interfaceHttpServletResponse
- Overrides:
containsHeader
in classHttpServletResponseWrapper
-
setHeader
- Specified by:
setHeader
in interfaceHttpServletResponse
- Overrides:
setHeader
in classHttpServletResponseWrapper
-
addHeader
- Specified by:
addHeader
in interfaceHttpServletResponse
- Overrides:
addHeader
in classHttpServletResponseWrapper
-
setIntHeader
- Specified by:
setIntHeader
in interfaceHttpServletResponse
- Overrides:
setIntHeader
in classHttpServletResponseWrapper
-
addIntHeader
- Specified by:
addIntHeader
in interfaceHttpServletResponse
- Overrides:
addIntHeader
in classHttpServletResponseWrapper
-
getHeader
- Specified by:
getHeader
in interfaceHttpServletResponse
- Overrides:
getHeader
in classHttpServletResponseWrapper
-
getHeaders
- Specified by:
getHeaders
in interfaceHttpServletResponse
- Overrides:
getHeaders
in classHttpServletResponseWrapper
-
getHeaderNames
- Specified by:
getHeaderNames
in interfaceHttpServletResponse
- Overrides:
getHeaderNames
in classHttpServletResponseWrapper
-
setBufferSize
public void setBufferSize(int size) - Specified by:
setBufferSize
in interfaceServletResponse
- Overrides:
setBufferSize
in classServletResponseWrapper
-
resetBuffer
public void resetBuffer()- Specified by:
resetBuffer
in interfaceServletResponse
- Overrides:
resetBuffer
in classServletResponseWrapper
-
reset
public void reset()- Specified by:
reset
in interfaceServletResponse
- Overrides:
reset
in classServletResponseWrapper
-
getContentAsByteArray
public byte[] getContentAsByteArray()Return the cached response content as a byte array. -
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
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
-