Package org.springframework.web.util
Class ContentCachingRequestWrapper
- java.lang.Object
- javax.servlet.ServletRequestWrapper
- javax.servlet.http.HttpServletRequestWrapper
- org.springframework.web.util.ContentCachingRequestWrapper
- All Implemented Interfaces:
HttpServletRequest,ServletRequest
public class ContentCachingRequestWrapper extends HttpServletRequestWrapper
HttpServletRequestwrapper that caches all content read from the input stream and reader, and allows this content to be retrieved via abyte array.Used e.g. by
AbstractRequestLoggingFilter.- Since:
- 4.1.3
- Author:
- Juergen Hoeller, Brian Clozel
- See Also:
ContentCachingResponseWrapper
Field Summary
Fields inherited from interface javax.servlet.http.HttpServletRequest
BASIC_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH, FORM_AUTH
Constructor Summary
Constructors Constructor Description ContentCachingRequestWrapper(HttpServletRequest request)Create a new ContentCachingRequestWrapper for the given servlet request.ContentCachingRequestWrapper(HttpServletRequest request, int contentCacheLimit)Create a new ContentCachingRequestWrapper for the given servlet request.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description StringgetCharacterEncoding()byte[]getContentAsByteArray()Return the cached request content as a byte array.ServletInputStreamgetInputStream()StringgetParameter(String name)Map<String,String[]>getParameterMap()Enumeration<String>getParameterNames()String[]getParameterValues(String name)BufferedReadergetReader()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 javax.servlet.http.HttpServletRequestWrapper
authenticate, changeSessionId, getAuthType, getContextPath, getCookies, getDateHeader, getHeader, getHeaderNames, getHeaders, getIntHeader, getMethod, getPart, getParts, getPathInfo, getPathTranslated, getQueryString, getRemoteUser, getRequestedSessionId, getRequestURI, getRequestURL, getServletPath, getSession, getSession, getUserPrincipal, isRequestedSessionIdFromCookie, isRequestedSessionIdFromUrl, isRequestedSessionIdFromURL, isRequestedSessionIdValid, isUserInRole, login, logout, upgrade
Methods inherited from class javax.servlet.ServletRequestWrapper
getAsyncContext, getAttribute, getAttributeNames, getContentLength, getContentLengthLong, getContentType, getDispatcherType, getLocalAddr, getLocale, getLocales, getLocalName, getLocalPort, getProtocol, getRealPath, getRemoteAddr, getRemoteHost, getRemotePort, getRequest, getRequestDispatcher, getScheme, getServerName, getServerPort, 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 javax.servlet.ServletRequest
getAsyncContext, getAttribute, getAttributeNames, getContentLength, getContentLengthLong, getContentType, getDispatcherType, getLocalAddr, getLocale, getLocales, getLocalName, getLocalPort, getProtocol, getRealPath, getRemoteAddr, getRemoteHost, getRemotePort, getRequestDispatcher, getScheme, getServerName, getServerPort, getServletContext, isAsyncStarted, isAsyncSupported, isSecure, removeAttribute, setAttribute, setCharacterEncoding, startAsync, startAsync
Constructor Detail
ContentCachingRequestWrapper
public ContentCachingRequestWrapper(HttpServletRequest request)
Create a new ContentCachingRequestWrapper for the given servlet request.- Parameters:
request- the original servlet request
ContentCachingRequestWrapper
public ContentCachingRequestWrapper(HttpServletRequest request, int contentCacheLimit)
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:
handleContentOverflow(int)
Method Detail
getInputStream
public ServletInputStream getInputStream() throws IOException
- Specified by:
getInputStreamin interfaceServletRequest- Overrides:
getInputStreamin classServletRequestWrapper- Throws:
IOException
getCharacterEncoding
public String getCharacterEncoding()
- Specified by:
getCharacterEncodingin interfaceServletRequest- Overrides:
getCharacterEncodingin classServletRequestWrapper
getReader
public BufferedReader getReader() throws IOException
- Specified by:
getReaderin interfaceServletRequest- Overrides:
getReaderin classServletRequestWrapper- Throws:
IOException
getParameter
public String getParameter(String name)
- Specified by:
getParameterin interfaceServletRequest- Overrides:
getParameterin classServletRequestWrapper
getParameterMap
public Map<String,String[]> getParameterMap()
- Specified by:
getParameterMapin interfaceServletRequest- Overrides:
getParameterMapin classServletRequestWrapper
getParameterNames
public Enumeration<String> getParameterNames()
- Specified by:
getParameterNamesin interfaceServletRequest- Overrides:
getParameterNamesin classServletRequestWrapper
getParameterValues
public String[] getParameterValues(String name)
- Specified by:
getParameterValuesin interfaceServletRequest- Overrides:
getParameterValuesin 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.
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:
ContentCachingRequestWrapper(HttpServletRequest, int)