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 a byte array
.
Used e.g. by ShallowEtagHeaderFilter
.
Note: As of Spring Framework 5.0, this wrapper is built on the Servlet 3.1 API.
ContentCachingRequestWrapper
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 and Description |
---|
ContentCachingResponseWrapper(HttpServletResponse response)
Create a new ContentCachingResponseWrapper for the given servlet response.
|
Modifier and Type | Method and 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 an
InputStream 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()
Return the status code as specified on the response.
|
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.
|
void |
setStatus(int sc)
The default behavior of this method is to call setStatus(int sc)
on the wrapped response object.
|
void |
setStatus(int sc,
String sm)
The default behavior of this method is to call
setStatus(int sc, String sm) on the wrapped response object.
|
addCookie, addDateHeader, addHeader, addIntHeader, containsHeader, encodeRedirectUrl, encodeRedirectURL, encodeUrl, encodeURL, getHeader, getHeaderNames, getHeaders, getStatus, getTrailerFields, setDateHeader, setHeader, setIntHeader, setTrailerFields
getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isCommitted, isWrapperFor, isWrapperFor, setCharacterEncoding, setContentType, setLocale, setResponse
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getBufferSize, getCharacterEncoding, getContentType, getLocale, isCommitted, setCharacterEncoding, setContentType, setLocale
public ContentCachingResponseWrapper(HttpServletResponse response)
response
- the original servlet responsepublic void setStatus(int sc)
javax.servlet.http.HttpServletResponseWrapper
setStatus
in interface HttpServletResponse
setStatus
in class HttpServletResponseWrapper
sc
- the status codeHttpServletResponse.sendError(int, java.lang.String)
public void setStatus(int sc, String sm)
javax.servlet.http.HttpServletResponseWrapper
setStatus
in interface HttpServletResponse
setStatus
in class HttpServletResponseWrapper
sc
- the status codesm
- the status messagepublic void sendError(int sc) throws IOException
javax.servlet.http.HttpServletResponseWrapper
sendError
in interface HttpServletResponse
sendError
in class HttpServletResponseWrapper
sc
- the error status codeIOException
- If an input or output exception occurspublic void sendError(int sc, String msg) throws IOException
javax.servlet.http.HttpServletResponseWrapper
sendError
in interface HttpServletResponse
sendError
in class HttpServletResponseWrapper
sc
- the error status codemsg
- the descriptive messageIOException
- If an input or output exception occurspublic void sendRedirect(String location) throws IOException
javax.servlet.http.HttpServletResponseWrapper
sendRedirect
in interface HttpServletResponse
sendRedirect
in class HttpServletResponseWrapper
location
- the redirect location URLIOException
- If an input or output exception occurspublic ServletOutputStream getOutputStream() throws IOException
javax.servlet.ServletResponseWrapper
getOutputStream
in interface ServletResponse
getOutputStream
in class ServletResponseWrapper
ServletOutputStream
for writing binary dataIOException
- if an input or output exception occurredServletResponse.getWriter()
,
ServletResponse.reset()
public PrintWriter getWriter() throws IOException
javax.servlet.ServletResponseWrapper
getWriter
in interface ServletResponse
getWriter
in class ServletResponseWrapper
PrintWriter
object that
can return character data to the clientUnsupportedEncodingException
- if the character encoding returned
by getCharacterEncoding
cannot be usedIOException
- if an input or output exception occurredServletResponse.getOutputStream()
,
ServletResponse.setCharacterEncoding(java.lang.String)
,
ServletResponse.reset()
public void flushBuffer() throws IOException
javax.servlet.ServletResponseWrapper
flushBuffer
in interface ServletResponse
flushBuffer
in class ServletResponseWrapper
IOException
- if the act of flushing the buffer cannot be
completed.ServletResponse.setBufferSize(int)
,
ServletResponse.getBufferSize()
,
ServletResponse.isCommitted()
,
ServletResponse.reset()
public void setContentLength(int len)
javax.servlet.ServletResponseWrapper
setContentLength
in interface ServletResponse
setContentLength
in class ServletResponseWrapper
len
- an integer specifying the length of the
content being returned to the client; sets the Content-Length headerpublic void setContentLengthLong(long len)
javax.servlet.ServletResponseWrapper
setContentLengthLong
in interface ServletResponse
setContentLengthLong
in class ServletResponseWrapper
len
- a long specifying the length of the
content being returned to the client; sets the Content-Length headerpublic void setBufferSize(int size)
javax.servlet.ServletResponseWrapper
setBufferSize
in interface ServletResponse
setBufferSize
in class ServletResponseWrapper
size
- the preferred buffer sizeServletResponse.getBufferSize()
,
ServletResponse.flushBuffer()
,
ServletResponse.isCommitted()
,
ServletResponse.reset()
public void resetBuffer()
javax.servlet.ServletResponseWrapper
resetBuffer
in interface ServletResponse
resetBuffer
in class ServletResponseWrapper
ServletResponse.setBufferSize(int)
,
ServletResponse.getBufferSize()
,
ServletResponse.isCommitted()
,
ServletResponse.reset()
public void reset()
javax.servlet.ServletResponseWrapper
reset
in interface ServletResponse
reset
in class ServletResponseWrapper
ServletResponse.setBufferSize(int)
,
ServletResponse.getBufferSize()
,
ServletResponse.flushBuffer()
,
ServletResponse.isCommitted()
public int getStatusCode()
public byte[] getContentAsByteArray()
public InputStream getContentInputStream()
InputStream
to the cached content.public int getContentSize()
public void copyBodyToResponse() throws IOException
IOException
protected void copyBodyToResponse(boolean complete) throws IOException
complete
- whether to set a corresponding content length
for the complete cached body contentIOException