Class ServletWebRequest
- All Implemented Interfaces:
NativeWebRequest,RequestAttributes,WebRequest
- Direct Known Subclasses:
DispatcherServletWebRequest,StandardServletAsyncWebRequest
WebRequest adapter for an HttpServletRequest.- Since:
- 2.0
- Author:
- Juergen Hoeller, Brian Clozel, Markus Malkusch
-
Field Summary
Fields inherited from class org.springframework.web.context.request.ServletRequestAttributes
DESTRUCTION_CALLBACK_NAME_PREFIX, immutableValueTypesFields inherited from class org.springframework.web.context.request.AbstractRequestAttributes
requestDestructionCallbacksFields inherited from interface org.springframework.web.context.request.RequestAttributes
REFERENCE_REQUEST, REFERENCE_SESSION, SCOPE_REQUEST, SCOPE_SESSION -
Constructor Summary
ConstructorsConstructorDescriptionServletWebRequest(HttpServletRequest request) Create a new ServletWebRequest instance for the given request.ServletWebRequest(HttpServletRequest request, HttpServletResponse response) Create a new ServletWebRequest instance for the given request/response pair. -
Method Summary
Modifier and TypeMethodDescriptionbooleancheckNotModified(long lastModifiedTimestamp) Check whether the requested resource has been modified given the supplied last-modified timestamp (as determined by the application).booleancheckNotModified(String etag) Check whether the requested resource has been modified given the suppliedETag(entity tag), as determined by the application.booleancheckNotModified(String eTag, long lastModifiedTimestamp) Check whether the requested resource has been modified given the suppliedETag(entity tag) and last-modified timestamp, as determined by the application.Return the context path for this request (usually the base path that the current web application is mapped to).getDescription(boolean includeClientInfo) Get a short description of this request, typically containing request URI and session id.Return the request header of the given name, ornullif none.Return an Iterator over request header names.String[]getHeaderValues(String headerName) Return the request header values for the given header name, ornullif none.Return the HTTP method of the request.Return the primary Locale for this request.Return the underlying native request object.<T> TgetNativeRequest(Class<T> requiredType) Return the underlying native request object, if available.Return the underlying native response object, if any.<T> TgetNativeResponse(Class<T> requiredType) Return the underlying native response object, if available.getParameter(String paramName) Return the request parameter of the given name, ornullif none.Return an immutable Map of the request parameters, with parameter names as map keys and parameter values as map values.Return an Iterator over request parameter names.String[]getParameterValues(String paramName) Return the request parameter values for the given parameter name, ornullif none.Return the remote user for this request, if any.Return the user principal for this request, if any.booleanbooleanisSecure()Return whether this request has been sent over a secure transport mechanism (such as SSL).booleanisUserInRole(String role) Determine whether the user is in the given role for this request.toString()Methods inherited from class org.springframework.web.context.request.ServletRequestAttributes
getAttribute, getAttributeNames, getRequest, getResponse, getSession, getSessionId, getSessionMutex, isImmutableSessionAttribute, registerDestructionCallback, registerSessionDestructionCallback, removeAttribute, resolveReference, setAttribute, updateAccessedSessionAttributesMethods inherited from class org.springframework.web.context.request.AbstractRequestAttributes
isRequestActive, registerRequestDestructionCallback, removeRequestDestructionCallback, requestCompletedMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.springframework.web.context.request.RequestAttributes
getAttribute, getAttributeNames, getSessionId, getSessionMutex, registerDestructionCallback, removeAttribute, resolveReference, setAttribute
-
Constructor Details
-
ServletWebRequest
Create a new ServletWebRequest instance for the given request.- Parameters:
request- current HTTP request
-
ServletWebRequest
Create a new ServletWebRequest instance for the given request/response pair.- Parameters:
request- current HTTP requestresponse- current HTTP response (for automatic last-modified handling)
-
-
Method Details
-
getNativeRequest
Description copied from interface:NativeWebRequestReturn the underlying native request object.- Specified by:
getNativeRequestin interfaceNativeWebRequest- See Also:
-
getNativeResponse
Description copied from interface:NativeWebRequestReturn the underlying native response object, if any.- Specified by:
getNativeResponsein interfaceNativeWebRequest- See Also:
-
getNativeRequest
Description copied from interface:NativeWebRequestReturn the underlying native request object, if available.- Specified by:
getNativeRequestin interfaceNativeWebRequest- Parameters:
requiredType- the desired type of request object- Returns:
- the matching request object, or
nullif none of that type is available - See Also:
-
getNativeResponse
Description copied from interface:NativeWebRequestReturn the underlying native response object, if available.- Specified by:
getNativeResponsein interfaceNativeWebRequest- Parameters:
requiredType- the desired type of response object- Returns:
- the matching response object, or
nullif none of that type is available - See Also:
-
getHttpMethod
Return the HTTP method of the request.- Since:
- 4.0.2
-
getHeader
Description copied from interface:WebRequestReturn the request header of the given name, ornullif none.Retrieves the first header value in case of a multi-value header.
- Specified by:
getHeaderin interfaceWebRequest- See Also:
-
getHeaderValues
Description copied from interface:WebRequestReturn the request header values for the given header name, ornullif none.A single-value header will be exposed as an array with a single element.
- Specified by:
getHeaderValuesin interfaceWebRequest- See Also:
-
getHeaderNames
Description copied from interface:WebRequestReturn an Iterator over request header names.- Specified by:
getHeaderNamesin interfaceWebRequest- See Also:
-
getParameter
Description copied from interface:WebRequestReturn the request parameter of the given name, ornullif none.Retrieves the first parameter value in case of a multi-value parameter.
- Specified by:
getParameterin interfaceWebRequest- See Also:
-
getParameterValues
Description copied from interface:WebRequestReturn the request parameter values for the given parameter name, ornullif none.A single-value parameter will be exposed as an array with a single element.
- Specified by:
getParameterValuesin interfaceWebRequest- See Also:
-
getParameterNames
Description copied from interface:WebRequestReturn an Iterator over request parameter names.- Specified by:
getParameterNamesin interfaceWebRequest- See Also:
-
getParameterMap
Description copied from interface:WebRequestReturn an immutable Map of the request parameters, with parameter names as map keys and parameter values as map values. The map values will be of type String array.A single-value parameter will be exposed as an array with a single element.
- Specified by:
getParameterMapin interfaceWebRequest- See Also:
-
getLocale
Description copied from interface:WebRequestReturn the primary Locale for this request.- Specified by:
getLocalein interfaceWebRequest- See Also:
-
getContextPath
Description copied from interface:WebRequestReturn the context path for this request (usually the base path that the current web application is mapped to).- Specified by:
getContextPathin interfaceWebRequest- See Also:
-
getRemoteUser
Description copied from interface:WebRequestReturn the remote user for this request, if any.- Specified by:
getRemoteUserin interfaceWebRequest- See Also:
-
getUserPrincipal
Description copied from interface:WebRequestReturn the user principal for this request, if any.- Specified by:
getUserPrincipalin interfaceWebRequest- See Also:
-
isUserInRole
Description copied from interface:WebRequestDetermine whether the user is in the given role for this request.- Specified by:
isUserInRolein interfaceWebRequest- See Also:
-
isSecure
public boolean isSecure()Description copied from interface:WebRequestReturn whether this request has been sent over a secure transport mechanism (such as SSL).- Specified by:
isSecurein interfaceWebRequest- See Also:
-
checkNotModified
public boolean checkNotModified(long lastModifiedTimestamp) Description copied from interface:WebRequestCheck whether the requested resource has been modified given the supplied last-modified timestamp (as determined by the application).This will also transparently set the "Last-Modified" response header and HTTP status when applicable.
Typical usage:
public String myHandleMethod(WebRequest request, Model model) { long lastModified = // application-specific calculation if (request.checkNotModified(lastModified)) { // shortcut exit - no further processing necessary return null; } // further request processing, actually building content model.addAttribute(...); return "myViewName"; }This method works with conditional GET/HEAD requests, but also with conditional POST/PUT/DELETE requests.
Note: you can use either this
#checkNotModified(long)method; orWebRequest.checkNotModified(String). If you want to enforce both a strong entity tag and a Last-Modified value, as recommended by the HTTP specification, then you should useWebRequest.checkNotModified(String, long).If the "If-Modified-Since" header is set but cannot be parsed to a date value, this method will ignore the header and proceed with setting the last-modified timestamp on the response.
- Specified by:
checkNotModifiedin interfaceWebRequest- Parameters:
lastModifiedTimestamp- the last-modified timestamp in milliseconds that the application determined for the underlying resource- Returns:
- whether the request qualifies as not modified, allowing to abort request processing and relying on the response telling the client that the content has not been modified
-
checkNotModified
Description copied from interface:WebRequestCheck whether the requested resource has been modified given the suppliedETag(entity tag), as determined by the application.This will also transparently set the "ETag" response header and HTTP status when applicable.
Typical usage:
public String myHandleMethod(WebRequest request, Model model) { String eTag = // application-specific calculation if (request.checkNotModified(eTag)) { // shortcut exit - no further processing necessary return null; } // further request processing, actually building content model.addAttribute(...); return "myViewName"; }Note: you can use either this
#checkNotModified(String)method; orWebRequest.checkNotModified(long). If you want to enforce both a strong entity tag and a Last-Modified value, as recommended by the HTTP specification, then you should useWebRequest.checkNotModified(String, long).- Specified by:
checkNotModifiedin interfaceWebRequest- Parameters:
etag- the entity tag that the application determined for the underlying resource. This parameter will be padded with quotes (") if necessary.- Returns:
- true if the request does not require further processing.
-
checkNotModified
Description copied from interface:WebRequestCheck whether the requested resource has been modified given the suppliedETag(entity tag) and last-modified timestamp, as determined by the application.This will also transparently set the "ETag" and "Last-Modified" response headers, and HTTP status when applicable.
Typical usage:
public String myHandleMethod(WebRequest request, Model model) { String eTag = // application-specific calculation long lastModified = // application-specific calculation if (request.checkNotModified(eTag, lastModified)) { // shortcut exit - no further processing necessary return null; } // further request processing, actually building content model.addAttribute(...); return "myViewName"; }This method works with conditional GET/HEAD requests, but also with conditional POST/PUT/DELETE requests.
Note: The HTTP specification recommends setting both ETag and Last-Modified values, but you can also use
#checkNotModified(String)orWebRequest.checkNotModified(long).- Specified by:
checkNotModifiedin interfaceWebRequest- Parameters:
eTag- the entity tag that the application determined for the underlying resource. This parameter will be padded with quotes (") if necessary.lastModifiedTimestamp- the last-modified timestamp in milliseconds that the application determined for the underlying resource- Returns:
- true if the request does not require further processing.
-
isNotModified
public boolean isNotModified() -
getDescription
Description copied from interface:WebRequestGet a short description of this request, typically containing request URI and session id.- Specified by:
getDescriptionin interfaceWebRequest- Parameters:
includeClientInfo- whether to include client-specific information such as session id and user name- Returns:
- the requested description as String
-
toString
- Overrides:
toStringin classServletRequestAttributes
-