Class ContentCachingRequestWrapper
- All Implemented Interfaces:
- jakarta.servlet.http.HttpServletRequest, jakarta.servlet.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 SummaryFields inherited from interface jakarta.servlet.http.HttpServletRequestBASIC_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH, FORM_AUTH
- 
Constructor SummaryConstructorsConstructorDescriptionContentCachingRequestWrapper(jakarta.servlet.http.HttpServletRequest request, int cacheLimit) Create a new ContentCachingRequestWrapper for the given servlet request.
- 
Method SummaryModifier and TypeMethodDescriptionbyte[]Return the cached request content as a byte array.Return the cached request content as a String, using the configuredCharset.jakarta.servlet.ServletInputStreamgetParameter(String name) String[]getParameterValues(String name) protected voidhandleContentOverflow(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.HttpServletRequestWrapperauthenticate, 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, upgradeMethods inherited from class jakarta.servlet.ServletRequestWrappergetAsyncContext, 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, setCharacterEncoding, setRequest, startAsync, startAsyncMethods inherited from class Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface jakarta.servlet.ServletRequestgetAsyncContext, 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, setCharacterEncoding, startAsync, startAsync
- 
Constructor Details- 
ContentCachingRequestWrapperpublic ContentCachingRequestWrapper(jakarta.servlet.http.HttpServletRequest request, int cacheLimit) Create a new ContentCachingRequestWrapper for the given servlet request.- Parameters:
- request- the original servlet request
- cacheLimit- the maximum number of bytes to cache per request; no limit is set if the value is 0 or less. It is recommended to set a concrete limit in order to avoid using too much memory.
- Since:
- 4.3.6
- See Also:
 
 
- 
- 
Method Details- 
getInputStream- Specified by:
- getInputStreamin interface- jakarta.servlet.ServletRequest
- Overrides:
- getInputStreamin class- jakarta.servlet.ServletRequestWrapper
- Throws:
- IOException
 
- 
getCharacterEncoding- Specified by:
- getCharacterEncodingin interface- jakarta.servlet.ServletRequest
- Overrides:
- getCharacterEncodingin class- jakarta.servlet.ServletRequestWrapper
 
- 
getReader- Specified by:
- getReaderin interface- jakarta.servlet.ServletRequest
- Overrides:
- getReaderin class- jakarta.servlet.ServletRequestWrapper
- Throws:
- IOException
 
- 
getParameter
- 
getParameterMap
- 
getParameterNames- Specified by:
- getParameterNamesin interface- jakarta.servlet.ServletRequest
- Overrides:
- getParameterNamesin class- jakarta.servlet.ServletRequestWrapper
 
- 
getParameterValues
- 
getContentAsByteArraypublic 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. - See Also:
 
- 
getContentAsStringReturn 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:
 
- 
handleContentOverflowprotected 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:
 
 
-