Class ContentCachingRequestWrapper
- All Implemented Interfaces:
HttpServletRequest
,ServletRequest
HttpServletRequest
wrapper that caches all content read from
the input stream and reader,
and allows this content to be retrieved via a byte array
.
This class acts as an interceptor that only caches content as it is being
read but otherwise does not cause content to be read. That means if the request
content is not consumed, then the content is not cached, and cannot be
retrieved via getContentAsByteArray()
.
Used, for example, by AbstractRequestLoggingFilter
.
- Since:
- 4.1.3
- Author:
- Juergen Hoeller, Brian Clozel
- See Also:
-
Field Summary
Fields inherited from interface jakarta.servlet.http.HttpServletRequest
BASIC_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH, FORM_AUTH
-
Constructor Summary
ConstructorDescriptionCreate a new ContentCachingRequestWrapper for the given servlet request.ContentCachingRequestWrapper
(HttpServletRequest request, int contentCacheLimit) Create a new ContentCachingRequestWrapper for the given servlet request. -
Method Summary
Modifier and TypeMethodDescriptionbyte[]
Return the cached request content as a byte array.Return the cached request content as a String, using the configuredCharset
.getParameter
(String name) String[]
getParameterValues
(String name) protected void
handleContentOverflow
(int contentCacheLimit) Template method for handling a content overflow: specifically, a request body being read that exceeds the specified content cache limit.Methods inherited from class jakarta.servlet.http.HttpServletRequestWrapper
authenticate, changeSessionId, getAuthType, getContextPath, getCookies, getDateHeader, getHeader, getHeaderNames, getHeaders, getHttpServletMapping, getIntHeader, getMethod, getPart, getParts, getPathInfo, getPathTranslated, getQueryString, getRemoteUser, getRequestedSessionId, getRequestURI, getRequestURL, getServletPath, getSession, getSession, getTrailerFields, getUserPrincipal, isRequestedSessionIdFromCookie, isRequestedSessionIdFromURL, isRequestedSessionIdValid, isTrailerFieldsReady, isUserInRole, login, logout, newPushBuilder, upgrade
Methods inherited from class jakarta.servlet.ServletRequestWrapper
getAsyncContext, getAttribute, getAttributeNames, getContentLength, getContentLengthLong, getContentType, getDispatcherType, getLocalAddr, getLocale, getLocales, getLocalName, getLocalPort, getProtocol, getProtocolRequestId, getRemoteAddr, getRemoteHost, getRemotePort, getRequest, getRequestDispatcher, getRequestId, getScheme, getServerName, getServerPort, getServletConnection, getServletContext, isAsyncStarted, isAsyncSupported, isSecure, isWrapperFor, isWrapperFor, removeAttribute, setAttribute, setCharacterEncoding, setRequest, startAsync, startAsync
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface jakarta.servlet.ServletRequest
getAsyncContext, getAttribute, getAttributeNames, getContentLength, getContentLengthLong, getContentType, getDispatcherType, getLocalAddr, getLocale, getLocales, getLocalName, getLocalPort, getProtocol, getProtocolRequestId, getRemoteAddr, getRemoteHost, getRemotePort, getRequestDispatcher, getRequestId, getScheme, getServerName, getServerPort, getServletConnection, getServletContext, isAsyncStarted, isAsyncSupported, isSecure, removeAttribute, setAttribute, setCharacterEncoding, startAsync, startAsync
-
Constructor Details
-
ContentCachingRequestWrapper
Create a new ContentCachingRequestWrapper for the given servlet request.- Parameters:
request
- the original servlet request
-
ContentCachingRequestWrapper
Create a new ContentCachingRequestWrapper for the given servlet request.- Parameters:
request
- the original servlet requestcontentCacheLimit
- the maximum number of bytes to cache per request- Since:
- 4.3.6
- See Also:
-
-
Method Details
-
getInputStream
- Specified by:
getInputStream
in interfaceServletRequest
- Overrides:
getInputStream
in classServletRequestWrapper
- Throws:
IOException
-
getCharacterEncoding
- Specified by:
getCharacterEncoding
in interfaceServletRequest
- Overrides:
getCharacterEncoding
in classServletRequestWrapper
-
getReader
- Specified by:
getReader
in interfaceServletRequest
- Overrides:
getReader
in classServletRequestWrapper
- Throws:
IOException
-
getParameter
- Specified by:
getParameter
in interfaceServletRequest
- Overrides:
getParameter
in classServletRequestWrapper
-
getParameterMap
- Specified by:
getParameterMap
in interfaceServletRequest
- Overrides:
getParameterMap
in classServletRequestWrapper
-
getParameterNames
- Specified by:
getParameterNames
in interfaceServletRequest
- Overrides:
getParameterNames
in classServletRequestWrapper
-
getParameterValues
- Specified by:
getParameterValues
in interfaceServletRequest
- Overrides:
getParameterValues
in classServletRequestWrapper
-
getContentAsByteArray
public byte[] getContentAsByteArray()Return the cached request content as a byte array.The returned array will never be larger than the content cache limit.
Note: The byte array returned from this method reflects the amount of content that has been read at the time when it is called. If the application does not read the content, this method returns an empty array.
-
getContentAsString
Return the cached request content as a String, using the configuredCharset
.Note: The String returned from this method reflects the amount of content that has been read at the time when it is called. If the application does not read the content, this method returns an empty String.
- Since:
- 6.1
- See Also:
-
handleContentOverflow
protected void handleContentOverflow(int contentCacheLimit) Template method for handling a content overflow: specifically, a request body being read that exceeds the specified content cache limit.The default implementation is empty. Subclasses may override this to throw a payload-too-large exception or the like.
- Parameters:
contentCacheLimit
- the maximum number of bytes to cache per request which has just been exceeded- Since:
- 4.3.6
- See Also:
-