Class ServletWebRequest
- java.lang.Object
- org.springframework.web.context.request.AbstractRequestAttributes
- org.springframework.web.context.request.ServletRequestAttributes
- org.springframework.web.context.request.ServletWebRequest
- All Implemented Interfaces:
NativeWebRequest
,RequestAttributes
,WebRequest
- Direct Known Subclasses:
DispatcherServletWebRequest
,StandardServletAsyncWebRequest
public class ServletWebRequest extends ServletRequestAttributes implements NativeWebRequest
WebRequest
adapter for anHttpServletRequest
.- 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, immutableValueTypes
Fields inherited from class org.springframework.web.context.request.AbstractRequestAttributes
requestDestructionCallbacks
Fields inherited from interface org.springframework.web.context.request.RequestAttributes
REFERENCE_REQUEST, REFERENCE_SESSION, SCOPE_REQUEST, SCOPE_SESSION
Constructor Summary
Constructors Constructor Description ServletWebRequest(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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
checkNotModified(long lastModifiedTimestamp)
Check whether the requested resource has been modified given the supplied last-modified timestamp (as determined by the application).boolean
checkNotModified(String etag)
Check whether the requested resource has been modified given the suppliedETag
(entity tag), as determined by the application.boolean
checkNotModified(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.String
getContextPath()
Return the context path for this request (usually the base path that the current web application is mapped to).String
getDescription(boolean includeClientInfo)
Get a short description of this request, typically containing request URI and session id.String
getHeader(String headerName)
Return the request header of the given name, ornull
if none.Iterator<String>
getHeaderNames()
Return a Iterator over request header names.String[]
getHeaderValues(String headerName)
Return the request header values for the given header name, ornull
if none.HttpMethod
getHttpMethod()
Return the HTTP method of the request.Locale
getLocale()
Return the primary Locale for this request.Object
getNativeRequest()
Return the underlying native request object.<T> T
getNativeRequest(Class<T> requiredType)
Return the underlying native request object, if available.Object
getNativeResponse()
Return the underlying native response object, if any.<T> T
getNativeResponse(Class<T> requiredType)
Return the underlying native response object, if available.String
getParameter(String paramName)
Return the request parameter of the given name, ornull
if none.Map<String,String[]>
getParameterMap()
Return a immutable Map of the request parameters, with parameter names as map keys and parameter values as map values.Iterator<String>
getParameterNames()
Return a Iterator over request parameter names.String[]
getParameterValues(String paramName)
Return the request parameter values for the given parameter name, ornull
if none.String
getRemoteUser()
Return the remote user for this request, if any.Principal
getUserPrincipal()
Return the user principal for this request, if any.boolean
isNotModified()
boolean
isSecure()
Return whether this request has been sent over a secure transport mechanism (such as SSL).boolean
isUserInRole(String role)
Determine whether the user is in the given role for this request.String
toString()
Methods inherited from class org.springframework.web.context.request.ServletRequestAttributes
getAttribute, getAttributeNames, getRequest, getResponse, getSession, getSessionId, getSessionMutex, isImmutableSessionAttribute, registerDestructionCallback, registerSessionDestructionCallback, removeAttribute, resolveReference, setAttribute, updateAccessedSessionAttributes
Methods inherited from class org.springframework.web.context.request.AbstractRequestAttributes
isRequestActive, registerRequestDestructionCallback, removeRequestDestructionCallback, requestCompleted
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.web.context.request.RequestAttributes
getAttribute, getAttributeNames, getSessionId, getSessionMutex, registerDestructionCallback, removeAttribute, resolveReference, setAttribute
Constructor Detail
ServletWebRequest
public ServletWebRequest(HttpServletRequest request)
Create a new ServletWebRequest instance for the given request.- Parameters:
request
- current HTTP request
ServletWebRequest
public ServletWebRequest(HttpServletRequest request, @Nullable HttpServletResponse response)
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 Detail
getNativeRequest
public Object getNativeRequest()
Description copied from interface:NativeWebRequest
Return the underlying native request object.- Specified by:
getNativeRequest
in interfaceNativeWebRequest
- See Also:
HttpServletRequest
getNativeResponse
public Object getNativeResponse()
Description copied from interface:NativeWebRequest
Return the underlying native response object, if any.- Specified by:
getNativeResponse
in interfaceNativeWebRequest
- See Also:
HttpServletResponse
getNativeRequest
public <T> T getNativeRequest(@Nullable Class<T> requiredType)
Description copied from interface:NativeWebRequest
Return the underlying native request object, if available.- Specified by:
getNativeRequest
in interfaceNativeWebRequest
- Parameters:
requiredType
- the desired type of request object- Returns:
- the matching request object, or
null
if none of that type is available - See Also:
HttpServletRequest
getNativeResponse
public <T> T getNativeResponse(@Nullable Class<T> requiredType)
Description copied from interface:NativeWebRequest
Return the underlying native response object, if available.- Specified by:
getNativeResponse
in interfaceNativeWebRequest
- Parameters:
requiredType
- the desired type of response object- Returns:
- the matching response object, or
null
if none of that type is available - See Also:
HttpServletResponse
getHttpMethod
@Nullable public HttpMethod getHttpMethod()
Return the HTTP method of the request.- Since:
- 4.0.2
getHeader
@Nullable public String getHeader(String headerName)
Description copied from interface:WebRequest
Return the request header of the given name, ornull
if none.Retrieves the first header value in case of a multi-value header.
- Specified by:
getHeader
in interfaceWebRequest
- See Also:
HttpServletRequest.getHeader(String)
getHeaderValues
@Nullable public String[] getHeaderValues(String headerName)
Description copied from interface:WebRequest
Return the request header values for the given header name, ornull
if none.A single-value header will be exposed as an array with a single element.
- Specified by:
getHeaderValues
in interfaceWebRequest
- See Also:
HttpServletRequest.getHeaders(String)
getHeaderNames
public Iterator<String> getHeaderNames()
Description copied from interface:WebRequest
Return a Iterator over request header names.- Specified by:
getHeaderNames
in interfaceWebRequest
- See Also:
HttpServletRequest.getHeaderNames()
getParameter
@Nullable public String getParameter(String paramName)
Description copied from interface:WebRequest
Return the request parameter of the given name, ornull
if none.Retrieves the first parameter value in case of a multi-value parameter.
- Specified by:
getParameter
in interfaceWebRequest
- See Also:
ServletRequest.getParameter(String)
getParameterValues
@Nullable public String[] getParameterValues(String paramName)
Description copied from interface:WebRequest
Return the request parameter values for the given parameter name, ornull
if none.A single-value parameter will be exposed as an array with a single element.
- Specified by:
getParameterValues
in interfaceWebRequest
- See Also:
ServletRequest.getParameterValues(String)
getParameterNames
public Iterator<String> getParameterNames()
Description copied from interface:WebRequest
Return a Iterator over request parameter names.- Specified by:
getParameterNames
in interfaceWebRequest
- See Also:
ServletRequest.getParameterNames()
getParameterMap
public Map<String,String[]> getParameterMap()
Description copied from interface:WebRequest
Return a 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:
getParameterMap
in interfaceWebRequest
- See Also:
ServletRequest.getParameterMap()
getLocale
public Locale getLocale()
Description copied from interface:WebRequest
Return the primary Locale for this request.- Specified by:
getLocale
in interfaceWebRequest
- See Also:
ServletRequest.getLocale()
getContextPath
public String getContextPath()
Description copied from interface:WebRequest
Return the context path for this request (usually the base path that the current web application is mapped to).- Specified by:
getContextPath
in interfaceWebRequest
- See Also:
HttpServletRequest.getContextPath()
getRemoteUser
@Nullable public String getRemoteUser()
Description copied from interface:WebRequest
Return the remote user for this request, if any.- Specified by:
getRemoteUser
in interfaceWebRequest
- See Also:
HttpServletRequest.getRemoteUser()
getUserPrincipal
@Nullable public Principal getUserPrincipal()
Description copied from interface:WebRequest
Return the user principal for this request, if any.- Specified by:
getUserPrincipal
in interfaceWebRequest
- See Also:
HttpServletRequest.getUserPrincipal()
isUserInRole
public boolean isUserInRole(String role)
Description copied from interface:WebRequest
Determine whether the user is in the given role for this request.- Specified by:
isUserInRole
in interfaceWebRequest
- See Also:
HttpServletRequest.isUserInRole(String)
isSecure
public boolean isSecure()
Description copied from interface:WebRequest
Return whether this request has been sent over a secure transport mechanism (such as SSL).- Specified by:
isSecure
in interfaceWebRequest
- See Also:
ServletRequest.isSecure()
checkNotModified
public boolean checkNotModified(long lastModifiedTimestamp)
Description copied from interface:WebRequest
Check 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 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:
checkNotModified
in 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
public boolean checkNotModified(String etag)
Description copied from interface:WebRequest
Check 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 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:
checkNotModified
in 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
public boolean checkNotModified(@Nullable String etag, long lastModifiedTimestamp)
Description copied from interface:WebRequest
Check 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:
checkNotModified
in 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
public String getDescription(boolean includeClientInfo)
Description copied from interface:WebRequest
Get a short description of this request, typically containing request URI and session id.- Specified by:
getDescription
in interfaceWebRequest
- Parameters:
includeClientInfo
- whether to include client-specific information such as session id and user name- Returns:
- the requested description as String
toString
public String toString()
- Overrides:
toString
in classServletRequestAttributes