org.springframework.web.context.request

## 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, NoSupportAsyncWebRequest, StandardServletAsyncWebRequest

      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

    Constructors
    Constructor and 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

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `checkNotModified(long lastModifiedTimestamp)` Check whether the request qualifies as not modified given the supplied last-modified timestamp (as determined by the application).
    `boolean` | `checkNotModified(String eTag)` Check whether the request qualifies as not modified given the supplied `ETag` (entity tag), 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, 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.
    `Object` | `getNativeRequest()` Return the underlying native request object, if available.
    `<T> T` | `getNativeRequest(Class<T> requiredType)` Return the underlying native request object, if available.
    `Object` | `getNativeResponse()` Return the underlying native response object, if available.
    `<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, 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`

    - #### getNativeRequest

          public <T> T getNativeRequest(Class<T> requiredType)

      Description copied from interface: `NativeWebRequest`
      Return the underlying native request object, if available.
      Specified by:
        `getNativeRequest` in interface `NativeWebRequest`
      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`, `ActionRequest`, `RenderRequest`

    - #### getNativeResponse

          public <T> T getNativeResponse(Class<T> requiredType)

      Description copied from interface: `NativeWebRequest`
      Return the underlying native response object, if available.
      Specified by:
        `getNativeResponse` in interface `NativeWebRequest`
      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`, `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";
           }

      Note: that you typically want to use either this `WebRequest.checkNotModified(long)` method; or `WebRequest.checkNotModified(String)`, but not both.

      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

    - #### checkNotModified

          public boolean checkNotModified(String eTag)

      Description copied from interface: `WebRequest`
      Check whether the request qualifies as not modified given the supplied `ETag` (entity tag), 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) {
             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: that you typically want to use either this `WebRequest.checkNotModified(String)` method; or `WebRequest.checkNotModified(long)`, but not both.

      Specified by:
        `checkNotModified` in interface `WebRequest`
      Parameters:
        `eTag` - the entity tag that the application determined for the underlying resource. This parameter will be padded with quotes (") if necessary.
      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

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `ServletRequestAttributes`