Package org.springframework.web.context.request

# Interface WebRequest

All Superinterfaces:
  `RequestAttributes`

All Known Subinterfaces:
  `AsyncWebRequest`, `NativeWebRequest`

All Known Implementing Classes:
  `FacesWebRequest`, `ServletWebRequest`, `StandardServletAsyncWebRequest`

public interface WebRequest extends RequestAttributes
Generic interface for a web request. Mainly intended for generic web request interceptors, giving them access to general request metadata, not for actual handling of the request.

Since:
  2.0
Author:
  Juergen Hoeller, Brian Clozel
See Also:
  - `WebRequestInterceptor`

## Field Summary

### Fields inherited from interface org.springframework.web.context.request.RequestAttributes

`REFERENCE_REQUEST, REFERENCE_SESSION, SCOPE_REQUEST, SCOPE_SESSION`

## Method Summary

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 supplied `ETag` (entity tag), as determined by the application.
`boolean`
`checkNotModified(String etag, long lastModifiedTimestamp)`
Check whether the requested resource has been modified given the supplied `ETag` (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, or `null` if none.
`Iterator<String>`
`getHeaderNames()`
Return an 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.
`String`
`getParameter(String paramName)`
Return the request parameter of the given name, or `null` if none.
`Map<String,String[]>`
`getParameterMap()`
Return an immutable Map of the request parameters, with parameter names as map keys and parameter values as map values.
`Iterator<String>`
`getParameterNames()`
Return an 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.
`Principal`
`getUserPrincipal()`
Return the user principal for this request, if any.
`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.

### Methods inherited from interface org.springframework.web.context.request.RequestAttributes

`getAttribute, getAttributeNames, getSessionId, getSessionMutex, registerDestructionCallback, removeAttribute, resolveReference, setAttribute`

## Method Details

### getHeader

@Nullable String getHeader(String headerName)
Return the request header of the given name, or `null` if none.

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

Since:
  3.0
See Also:
  - `HttpServletRequest.getHeader(String)`

### getHeaderValues

@Nullable String[] getHeaderValues(String headerName)
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.

Since:
  3.0
See Also:
  - `HttpServletRequest.getHeaders(String)`

### getHeaderNames

Iterator<String> getHeaderNames()
Return an Iterator over request header names.

Since:
  3.0
See Also:
  - `HttpServletRequest.getHeaderNames()`

### getParameter

@Nullable String getParameter(String paramName)
Return the request parameter of the given name, or `null` if none.

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

See Also:
  - `ServletRequest.getParameter(String)`

### getParameterValues

@Nullable String[] getParameterValues(String paramName)
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.

See Also:
  - `ServletRequest.getParameterValues(String)`

### getParameterNames

Iterator<String> getParameterNames()
Return an Iterator over request parameter names.

Since:
  3.0
See Also:
  - `ServletRequest.getParameterNames()`

### getParameterMap

Map<String,String[]> getParameterMap()
Return 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.

See Also:
  - `ServletRequest.getParameterMap()`

### getLocale

Locale getLocale()
Return the primary Locale for this request.

See Also:
  - `ServletRequest.getLocale()`

### getContextPath

String getContextPath()
Return the context path for this request (usually the base path that the current web application is mapped to).

See Also:
  - `HttpServletRequest.getContextPath()`

### getRemoteUser

@Nullable String getRemoteUser()
Return the remote user for this request, if any.

See Also:
  - `HttpServletRequest.getRemoteUser()`

### getUserPrincipal

@Nullable Principal getUserPrincipal()
Return the user principal for this request, if any.

See Also:
  - `HttpServletRequest.getUserPrincipal()`

### isUserInRole

boolean isUserInRole(String role)
Determine whether the user is in the given role for this request.

See Also:
  - `HttpServletRequest.isUserInRole(String)`

### isSecure

boolean isSecure()
Return whether this request has been sent over a secure transport mechanism (such as SSL).

See Also:
  - `ServletRequest.isSecure()`

### checkNotModified

boolean checkNotModified(long lastModifiedTimestamp)
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; or `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 use `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.

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

boolean checkNotModified(String etag)
Check whether the requested resource has been modified given the supplied `ETag` (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; or `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 use `checkNotModified(String, long)`.

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

boolean checkNotModified(@Nullable String etag, long lastModifiedTimestamp)
Check whether the requested resource has been modified given the supplied `ETag` (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)` or `checkNotModified(long)`.

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.
Since:
  4.2

### getDescription

String getDescription(boolean includeClientInfo)
Get a short description of this request, typically containing request URI and session id.

Parameters:
  `includeClientInfo` - whether to include client-specific information such as session id and user name
Returns:
  the requested description as String