org.springframework.web.context.request
Class ServletWebRequest

java.lang.Object
  extended by org.springframework.web.context.request.AbstractRequestAttributes
      extended by org.springframework.web.context.request.ServletRequestAttributes
          extended by org.springframework.web.context.request.ServletWebRequest
All Implemented Interfaces:
NativeWebRequest, RequestAttributes, WebRequest, MultipartRequest
Direct Known Subclasses:
DispatcherServletWebRequest

public class ServletWebRequest
extends ServletRequestAttributes
implements NativeWebRequest

WebRequest adapter for an HttpServletRequest.

Since:
2.0
Author:
Juergen Hoeller

Field Summary
 
Fields inherited from class org.springframework.web.context.request.ServletRequestAttributes
DESTRUCTION_CALLBACK_NAME_PREFIX
 
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_GLOBAL_SESSION, SCOPE_REQUEST, SCOPE_SESSION
 
Constructor Summary
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
 boolean checkNotModified(long lastModifiedTimestamp)
          Check whether the request qualifies as not modified given the supplied 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.
 MultipartFile getFile(String name)
          Return the contents plus description of an uploaded file in this request, or null if it does not exist.
 Map<String,MultipartFile> getFileMap()
          Return a Map of the multipart files contained in this request.
 Iterator<String> getFileNames()
          Return an Iterator of String objects containing the parameter names of the multipart files contained in this request.
 List<MultipartFile> getFiles(String name)
          Return the contents plus description of uploaded files in this request, or an empty list if it does not exist.
 String getHeader(String headerName)
          Return the request header of the given name, or null 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, or null if none.
 Locale getLocale()
          Return the primary Locale for this request.
 MultiValueMap<String,MultipartFile> getMultiFileMap()
          Return a MultiValueMap of the multipart files contained in this request.
 Object getNativeRequest()
          Return the underlying native request object, if available.
 Object getNativeResponse()
          Return the underlying native response object, if available.
 String getParameter(String paramName)
          Return the request parameter of the given name, or null 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, or null if none.
 String getRemoteUser()
          Return the remote user for this request, if any.
 HttpServletResponse getResponse()
          Exposes the native HttpServletRequest that we're wrapping (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, getSession, getSessionId, getSessionMutex, 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,
                         HttpServletResponse response)
Create a new ServletWebRequest instance for the given request/response pair.

Parameters:
request - current HTTP request
response - current HTTP response (for automatic last-modified handling)
Method Detail

getResponse

public final HttpServletResponse getResponse()
Exposes the native HttpServletRequest that we're wrapping (if any).


getNativeRequest

public Object getNativeRequest()
Description copied from interface: NativeWebRequest
Return the underlying native request object, if available.

Specified by:
getNativeRequest in interface NativeWebRequest
See Also:
HttpServletRequest, ActionRequest, RenderRequest

getNativeResponse

public Object getNativeResponse()
Description copied from interface: NativeWebRequest
Return the underlying native response object, if available.

Specified by:
getNativeResponse in interface NativeWebRequest
See Also:
HttpServletResponse, ActionResponse, RenderResponse

getHeader

public String getHeader(String headerName)
Description copied from interface: WebRequest
Return the request header of the given name, or null if none.

Retrieves the first header value in case of a multi-value header.

Specified by:
getHeader in interface WebRequest
See Also:
HttpServletRequest.getHeader(String)

getHeaderValues

public String[] getHeaderValues(String headerName)
Description copied from interface: WebRequest
Return the request header values for the given header name, or null if none.

A single-value header will be exposed as an array with a single element.

Specified by:
getHeaderValues in interface WebRequest
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 interface WebRequest
See Also:
HttpServletRequest.getHeaderNames()

getParameter

public String getParameter(String paramName)
Description copied from interface: WebRequest
Return the request parameter of the given name, or null if none.

Retrieves the first parameter value in case of a multi-value parameter.

Specified by:
getParameter in interface WebRequest
See Also:
ServletRequest.getParameter(String)

getParameterValues

public String[] getParameterValues(String paramName)
Description copied from interface: WebRequest
Return the request parameter values for the given parameter name, or null if none.

A single-value parameter will be exposed as an array with a single element.

Specified by:
getParameterValues in interface WebRequest
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 interface WebRequest
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 interface WebRequest
See Also:
ServletRequest.getParameterMap()

getLocale

public Locale getLocale()
Description copied from interface: WebRequest
Return the primary Locale for this request.

Specified by:
getLocale in interface WebRequest
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 interface WebRequest
See Also:
HttpServletRequest.getContextPath()

getRemoteUser

public String getRemoteUser()
Description copied from interface: WebRequest
Return the remote user for this request, if any.

Specified by:
getRemoteUser in interface WebRequest
See Also:
HttpServletRequest.getRemoteUser()

getUserPrincipal

public Principal getUserPrincipal()
Description copied from interface: WebRequest
Return the user principal for this request, if any.

Specified by:
getUserPrincipal in interface WebRequest
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 interface WebRequest
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 interface WebRequest
See Also:
ServletRequest.isSecure()

checkNotModified

public boolean checkNotModified(long lastModifiedTimestamp)
Description copied from interface: WebRequest
Check whether the request qualifies as not modified given the supplied last-modified timestamp (as determined by the application).

This will also transparently set the appropriate response headers, for both the modified case and the not-modified case.

Typical usage:

 public String myHandleMethod(WebRequest webRequest, 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";
 }

Specified by:
checkNotModified in interface WebRequest
Parameters:
lastModifiedTimestamp - the last-modified timestamp 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

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 interface WebRequest
Parameters:
includeClientInfo - whether to include client-specific information such as session id and user name
Returns:
the requested description as String

getFileNames

public Iterator<String> getFileNames()
Description copied from interface: MultipartRequest
Return an Iterator of String objects containing the parameter names of the multipart files contained in this request. These are the field names of the form (like with normal parameters), not the original file names.

Specified by:
getFileNames in interface MultipartRequest
Returns:
the names of the files

getFile

public MultipartFile getFile(String name)
Description copied from interface: MultipartRequest
Return the contents plus description of an uploaded file in this request, or null if it does not exist.

Specified by:
getFile in interface MultipartRequest
Parameters:
name - a String specifying the parameter name of the multipart file
Returns:
the uploaded content in the form of a MultipartFile object

getFiles

public List<MultipartFile> getFiles(String name)
Description copied from interface: MultipartRequest
Return the contents plus description of uploaded files in this request, or an empty list if it does not exist.

Specified by:
getFiles in interface MultipartRequest
Parameters:
name - a String specifying the parameter name of the multipart file
Returns:
the uploaded content in the form of a MultipartFile list

getFileMap

public Map<String,MultipartFile> getFileMap()
Description copied from interface: MultipartRequest
Return a Map of the multipart files contained in this request.

Specified by:
getFileMap in interface MultipartRequest
Returns:
a map containing the parameter names as keys, and the MultipartFile objects as values
See Also:
MultipartFile

getMultiFileMap

public MultiValueMap<String,MultipartFile> getMultiFileMap()
Description copied from interface: MultipartRequest
Return a MultiValueMap of the multipart files contained in this request.

Specified by:
getMultiFileMap in interface MultipartRequest
Returns:
a map containing the parameter names as keys, and a list of MultipartFile objects as values
See Also:
MultipartFile

toString

public String toString()
Overrides:
toString in class ServletRequestAttributes