public class ContentCachingRequestWrapper
extends HttpServletRequestWrapper
javax.servlet.http.HttpServletRequest
wrapper that caches all content read from
the input stream and reader,
and allows this content to be retrieved via a byte array
.
Used e.g. by AbstractRequestLoggingFilter
.
ContentCachingResponseWrapper
Modifier and Type | Class and Description |
---|---|
private class |
ContentCachingRequestWrapper.ContentCachingInputStream |
Modifier and Type | Field and Description |
---|---|
private java.io.ByteArrayOutputStream |
cachedContent |
private java.lang.Integer |
contentCacheLimit |
private static java.lang.String |
FORM_CONTENT_TYPE |
private ServletInputStream |
inputStream |
private java.io.BufferedReader |
reader |
Constructor and 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.
|
Modifier and Type | Method and Description |
---|---|
java.lang.String |
getCharacterEncoding() |
byte[] |
getContentAsByteArray()
Return the cached request content as a byte array.
|
ServletInputStream |
getInputStream() |
java.lang.String |
getParameter(java.lang.String name) |
java.util.Map<java.lang.String,java.lang.String[]> |
getParameterMap() |
java.util.Enumeration<java.lang.String> |
getParameterNames() |
java.lang.String[] |
getParameterValues(java.lang.String name) |
java.io.BufferedReader |
getReader() |
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.
|
private boolean |
isFormPost() |
private void |
writeRequestParametersToCachedContent() |
private static final java.lang.String FORM_CONTENT_TYPE
private final java.io.ByteArrayOutputStream cachedContent
private final java.lang.Integer contentCacheLimit
private ServletInputStream inputStream
private java.io.BufferedReader reader
public ContentCachingRequestWrapper(HttpServletRequest request)
request
- the original servlet requestpublic ContentCachingRequestWrapper(HttpServletRequest request, int contentCacheLimit)
request
- the original servlet requestcontentCacheLimit
- the maximum number of bytes to cache per requesthandleContentOverflow(int)
public ServletInputStream getInputStream() throws java.io.IOException
java.io.IOException
public java.lang.String getCharacterEncoding()
public java.io.BufferedReader getReader() throws java.io.IOException
java.io.IOException
public java.lang.String getParameter(java.lang.String name)
public java.util.Map<java.lang.String,java.lang.String[]> getParameterMap()
public java.util.Enumeration<java.lang.String> getParameterNames()
public java.lang.String[] getParameterValues(java.lang.String name)
private boolean isFormPost()
private void writeRequestParametersToCachedContent()
public byte[] getContentAsByteArray()
The returned array will never be larger than the content cache limit.
protected void handleContentOverflow(int contentCacheLimit)
The default implementation is empty. Subclasses may override this to throw a payload-too-large exception or the like.
contentCacheLimit
- the maximum number of bytes to cache per request
which has just been exceededContentCachingRequestWrapper(HttpServletRequest, int)