Top Description Fields Constructors Methods
org.springframework.web.context.request

public Class ServletWebRequest

extends ServletRequestAttributes
implements NativeWebRequest
Class Inheritance
All Implemented Interfaces
org.springframework.web.context.request.NativeWebRequest, org.springframework.web.context.request.WebRequest, org.springframework.web.context.request.RequestAttributes
Known Direct Subclasses
org.springframework.web.context.request.async.StandardServletAsyncWebRequest
Imports
java.security.Principal, java.text.ParseException, .SimpleDateFormat, java.util.Enumeration, .Iterator, .Locale, .Map, .Set, .TimeZone, java.util.regex.Matcher, .Pattern, jakarta.servlet.http.HttpServletRequest, .HttpServletResponse, .HttpSession, org.springframework.http.HttpHeaders, .HttpMethod, .HttpStatus, org.springframework.lang.Nullable, org.springframework.util.CollectionUtils, .ObjectUtils, .StringUtils, org.springframework.web.util.WebUtils

WebRequest adapter for an jakarta.servlet.http.HttpServletRequest.
Authors
Juergen Hoeller, Brian Clozel, Markus Malkusch
Since
2.0

Field Summary

Modifier and TypeField and Description
private static final String[]
DATE_FORMATS

Date formats as specified in the HTTP RFC.

private static final Pattern
ETAG_HEADER_VALUE_PATTERN

Pattern matching ETag multiple field values in headers such as "If-Match", "If-None-Match".

private static final TimeZone
private boolean
private static final Set<String>
Inherited from org.springframework.web.context.request.ServletRequestAttributes:
DESTRUCTION_CALLBACK_NAME_PREFIXimmutableValueTypes

Constructor Summary

AccessConstructor and Description
public
ServletWebRequest(HttpServletRequest
current HTTP request
request
)

Create a new ServletWebRequest instance for the given request.

public
ServletWebRequest(HttpServletRequest
current HTTP request
request
,
HttpServletResponse
current HTTP response (for automatic last-modified handling)
response
)

Create a new ServletWebRequest instance for the given request/response pair.

Method Summary

Modifier and TypeMethod and Description
private void
addCachingResponseHeaders(String eTag, long lastModifiedTimestamp)

public boolean
checkNotModified(long
the last-modified timestamp in milliseconds that the application determined for the underlying resource
lastModifiedTimestamp
)

Implements org.springframework.web.context.request.WebRequest.checkNotModified.

Check whether the requested resource has been modified given the supplied last-modified timestamp (as determined by the application).

public boolean
checkNotModified(String
the entity tag that the application determined for the underlying resource. This parameter will be padded with quotes (") if necessary.
etag
)

Implements org.springframework.web.context.request.WebRequest.checkNotModified.

Check whether the requested resource has been modified given the supplied ETag (entity tag), as determined by the application.

public boolean
checkNotModified(String
the entity tag that the application determined for the underlying resource. This parameter will be padded with quotes (") if necessary.
eTag
,
long
the last-modified timestamp in milliseconds that the application determined for the underlying resource
lastModifiedTimestamp
)

Implements org.springframework.web.context.request.WebRequest.checkNotModified.

Check whether the requested resource has been modified given the supplied ETag (entity tag) and last-modified timestamp, as determined by the application.

private boolean
eTagStrongMatch(String first, String second)

private boolean
eTagWeakMatch(String first, String second)

public String
getContextPath()

Implements org.springframework.web.context.request.WebRequest.getContextPath.

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

public String
getDescription(boolean
whether to include client-specific information such as session id and user name
includeClientInfo
)

Implements org.springframework.web.context.request.WebRequest.getDescription.

Get a short description of this request, typically containing request URI and session id.

public String
getHeader(String headerName)

Implements org.springframework.web.context.request.WebRequest.getHeader.

Return the request header of the given name, or null if none.

public Iterator<String>
getHeaderNames()

Implements org.springframework.web.context.request.WebRequest.getHeaderNames.

Return an Iterator over request header names.

public String[]
getHeaderValues(String headerName)

Implements org.springframework.web.context.request.WebRequest.getHeaderValues.

Return the request header values for the given header name, or null if none.

public HttpMethod
getHttpMethod()

Return the HTTP method of the request.

public Locale
getLocale()

Implements org.springframework.web.context.request.WebRequest.getLocale.

Return the primary Locale for this request.

public Object
getNativeRequest()

Implements org.springframework.web.context.request.NativeWebRequest.getNativeRequest.

Return the underlying native request object.

public <T> T
getNativeRequest(Class<T>
the desired type of request object
requiredType
)

Implements org.springframework.web.context.request.NativeWebRequest.getNativeRequest.

Return the underlying native request object, if available.

public Object
getNativeResponse()

Implements org.springframework.web.context.request.NativeWebRequest.getNativeResponse.

Return the underlying native response object, if any.

public <T> T
getNativeResponse(Class<T>
the desired type of response object
requiredType
)

Implements org.springframework.web.context.request.NativeWebRequest.getNativeResponse.

Return the underlying native response object, if available.

public String
getParameter(String paramName)

Implements org.springframework.web.context.request.WebRequest.getParameter.

Return the request parameter of the given name, or null if none.

public Map<String, String[]>
getParameterMap()

Implements org.springframework.web.context.request.WebRequest.getParameterMap.

Return an immutable Map of the request parameters, with parameter names as map keys and parameter values as map values.

public Iterator<String>
getParameterNames()

Implements org.springframework.web.context.request.WebRequest.getParameterNames.

Return an Iterator over request parameter names.

public String[]
getParameterValues(String paramName)

Implements org.springframework.web.context.request.WebRequest.getParameterValues.

Return the request parameter values for the given parameter name, or null if none.

public String
getRemoteUser()

Implements org.springframework.web.context.request.WebRequest.getRemoteUser.

Return the remote user for this request, if any.

public Principal
getUserPrincipal()

Implements org.springframework.web.context.request.WebRequest.getUserPrincipal.

Return the user principal for this request, if any.

public boolean
public boolean
isSecure()

Implements org.springframework.web.context.request.WebRequest.isSecure.

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

public boolean
isUserInRole(String role)

Implements org.springframework.web.context.request.WebRequest.isUserInRole.

Determine whether the user is in the given role for this request.

private boolean
matchRequestedETags(Enumeration<String> requestedETags, String eTag, boolean weakCompare)

private String
private long
parseDateHeader(String headerName)

private long
parseDateValue(String headerValue)

public String
toString()

Overrides org.springframework.web.context.request.ServletRequestAttributes.toString.

Returns a string representation of the object.

private void
updateResponseIdempotent(String eTag, long lastModifiedTimestamp)

private void
updateResponseStateChanging(String eTag, long lastModifiedTimestamp)

private boolean
private void
validateIfModifiedSince(long lastModifiedTimestamp)

private boolean
private boolean
validateIfUnmodifiedSince(long lastModifiedTimestamp)

Inherited from org.springframework.web.context.request.ServletRequestAttributes:
getAttributegetAttributeNamesgetRequestgetResponsegetSessiongetSessionIdgetSessionMutexisImmutableSessionAttributeregisterDestructionCallbackregisterSessionDestructionCallbackremoveAttributeresolveReferencesetAttributeupdateAccessedSessionAttributes

Field Detail

DATE_FORMATSback to summary
private static final String[] DATE_FORMATS

Date formats as specified in the HTTP RFC.

See Also
Section 7.1.1.1 of RFC 7231
ETAG_HEADER_VALUE_PATTERNback to summary
private static final Pattern ETAG_HEADER_VALUE_PATTERN

Pattern matching ETag multiple field values in headers such as "If-Match", "If-None-Match".

See Also
Section 2.3 of RFC 7232
GMTback to summary
private static final TimeZone GMT
notModifiedback to summary
private boolean notModified
SAFE_METHODSback to summary
private static final Set<String> SAFE_METHODS

Constructor Detail

ServletWebRequestback to summary
public ServletWebRequest(HttpServletRequest request)

Create a new ServletWebRequest instance for the given request.

Parameters
request:HttpServletRequest

current HTTP request

ServletWebRequestback to summary
public ServletWebRequest(HttpServletRequest request, HttpServletResponse response)

Create a new ServletWebRequest instance for the given request/response pair.

Parameters
request:HttpServletRequest

current HTTP request

response:HttpServletResponse

current HTTP response (for automatic last-modified handling)

Method Detail

addCachingResponseHeadersback to summary
private void addCachingResponseHeaders(String eTag, long lastModifiedTimestamp)
checkNotModifiedback to summary
public boolean checkNotModified(long lastModifiedTimestamp)

Implements org.springframework.web.context.request.WebRequest.checkNotModified.

Doc from org.springframework.web.context.request.WebRequest.checkNotModified.

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:long

the last-modified timestamp in milliseconds that the application determined for the underlying resource

Returns:boolean

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

Annotations
@Override
checkNotModifiedback to summary
public boolean checkNotModified(String etag)

Implements org.springframework.web.context.request.WebRequest.checkNotModified.

Doc from org.springframework.web.context.request.WebRequest.checkNotModified.

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:String

the entity tag that the application determined for the underlying resource. This parameter will be padded with quotes (") if necessary.

Returns:boolean

true if the request does not require further processing.

Annotations
@Override
checkNotModifiedback to summary
public boolean checkNotModified(String eTag, long lastModifiedTimestamp)

Implements org.springframework.web.context.request.WebRequest.checkNotModified.

Doc from org.springframework.web.context.request.WebRequest.checkNotModified.

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:String

the entity tag that the application determined for the underlying resource. This parameter will be padded with quotes (") if necessary.

lastModifiedTimestamp:long

the last-modified timestamp in milliseconds that the application determined for the underlying resource

Returns:boolean

true if the request does not require further processing.

Annotations
@Override
eTagStrongMatchback to summary
private boolean eTagStrongMatch(String first, String second)
eTagWeakMatchback to summary
private boolean eTagWeakMatch(String first, String second)
getContextPathback to summary
public String getContextPath()

Implements org.springframework.web.context.request.WebRequest.getContextPath.

Doc from org.springframework.web.context.request.WebRequest.getContextPath.

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

Annotations
@Override
getDescriptionback to summary
public String getDescription(boolean includeClientInfo)

Implements org.springframework.web.context.request.WebRequest.getDescription.

Doc from org.springframework.web.context.request.WebRequest.getDescription.

Get a short description of this request, typically containing request URI and session id.

Parameters
includeClientInfo:boolean

whether to include client-specific information such as session id and user name

Returns:String

the requested description as String

Annotations
@Override
getHeaderback to summary
public String getHeader(String headerName)

Implements org.springframework.web.context.request.WebRequest.getHeader.

Doc from org.springframework.web.context.request.WebRequest.getHeader.

Return the request header of the given name, or null if none.

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

Annotations
@Override
@Nullable
getHeaderNamesback to summary
public Iterator<String> getHeaderNames()

Implements org.springframework.web.context.request.WebRequest.getHeaderNames.

Doc from org.springframework.web.context.request.WebRequest.getHeaderNames.

Return an Iterator over request header names.

Annotations
@Override
getHeaderValuesback to summary
public String[] getHeaderValues(String headerName)

Implements org.springframework.web.context.request.WebRequest.getHeaderValues.

Doc from org.springframework.web.context.request.WebRequest.getHeaderValues.

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.

Annotations
@Override
@Nullable
getHttpMethodback to summary
public HttpMethod getHttpMethod()

Return the HTTP method of the request.

Since
4.0.2
getLocaleback to summary
public Locale getLocale()

Implements org.springframework.web.context.request.WebRequest.getLocale.

Doc from org.springframework.web.context.request.WebRequest.getLocale.

Return the primary Locale for this request.

Annotations
@Override
getNativeRequestback to summary
public Object getNativeRequest()

Implements org.springframework.web.context.request.NativeWebRequest.getNativeRequest.

Doc from org.springframework.web.context.request.NativeWebRequest.getNativeRequest.

Return the underlying native request object.

Annotations
@Override
getNativeRequestback to summary
public <T> T getNativeRequest(Class<T> requiredType)

Implements org.springframework.web.context.request.NativeWebRequest.getNativeRequest.

Doc from org.springframework.web.context.request.NativeWebRequest.getNativeRequest.

Return the underlying native request object, if available.

Parameters
requiredType:Class<T>

the desired type of request object

Returns:T

the matching request object, or null if none of that type is available

Annotations
@Override
getNativeResponseback to summary
public Object getNativeResponse()

Implements org.springframework.web.context.request.NativeWebRequest.getNativeResponse.

Doc from org.springframework.web.context.request.NativeWebRequest.getNativeResponse.

Return the underlying native response object, if any.

Annotations
@Override
getNativeResponseback to summary
public <T> T getNativeResponse(Class<T> requiredType)

Implements org.springframework.web.context.request.NativeWebRequest.getNativeResponse.

Doc from org.springframework.web.context.request.NativeWebRequest.getNativeResponse.

Return the underlying native response object, if available.

Parameters
requiredType:Class<T>

the desired type of response object

Returns:T

the matching response object, or null if none of that type is available

Annotations
@Override
getParameterback to summary
public String getParameter(String paramName)

Implements org.springframework.web.context.request.WebRequest.getParameter.

Doc from org.springframework.web.context.request.WebRequest.getParameter.

Return the request parameter of the given name, or null if none.

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

Annotations
@Override
@Nullable
getParameterMapback to summary
public Map<String, String[]> getParameterMap()

Implements org.springframework.web.context.request.WebRequest.getParameterMap.

Doc from org.springframework.web.context.request.WebRequest.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.

Annotations
@Override
getParameterNamesback to summary
public Iterator<String> getParameterNames()

Implements org.springframework.web.context.request.WebRequest.getParameterNames.

Doc from org.springframework.web.context.request.WebRequest.getParameterNames.

Return an Iterator over request parameter names.

Annotations
@Override
getParameterValuesback to summary
public String[] getParameterValues(String paramName)

Implements org.springframework.web.context.request.WebRequest.getParameterValues.

Doc from org.springframework.web.context.request.WebRequest.getParameterValues.

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.

Annotations
@Override
@Nullable
getRemoteUserback to summary
public String getRemoteUser()

Implements org.springframework.web.context.request.WebRequest.getRemoteUser.

Doc from org.springframework.web.context.request.WebRequest.getRemoteUser.

Return the remote user for this request, if any.

Annotations
@Override
@Nullable
getUserPrincipalback to summary
public Principal getUserPrincipal()

Implements org.springframework.web.context.request.WebRequest.getUserPrincipal.

Doc from org.springframework.web.context.request.WebRequest.getUserPrincipal.

Return the user principal for this request, if any.

Annotations
@Override
@Nullable
isNotModifiedback to summary
public boolean isNotModified()
isSecureback to summary
public boolean isSecure()

Implements org.springframework.web.context.request.WebRequest.isSecure.

Doc from org.springframework.web.context.request.WebRequest.isSecure.

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

Annotations
@Override
isUserInRoleback to summary
public boolean isUserInRole(String role)

Implements org.springframework.web.context.request.WebRequest.isUserInRole.

Doc from org.springframework.web.context.request.WebRequest.isUserInRole.

Determine whether the user is in the given role for this request.

Annotations
@Override
matchRequestedETagsback to summary
private boolean matchRequestedETags(Enumeration<String> requestedETags, String eTag, boolean weakCompare)
padEtagIfNecessaryback to summary
private String padEtagIfNecessary(String etag)
Annotations
@Nullable
parseDateHeaderback to summary
private long parseDateHeader(String headerName)
parseDateValueback to summary
private long parseDateValue(String headerValue)
toStringback to summary
public String toString()

Overrides org.springframework.web.context.request.ServletRequestAttributes.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object. Satisfying this method's contract implies a non-null result must be returned.

Returns:String

a string representation of the object

Annotations
@Override
updateResponseIdempotentback to summary
private void updateResponseIdempotent(String eTag, long lastModifiedTimestamp)
updateResponseStateChangingback to summary
private void updateResponseStateChanging(String eTag, long lastModifiedTimestamp)
validateIfMatchback to summary
private boolean validateIfMatch(String eTag)
validateIfModifiedSinceback to summary
private void validateIfModifiedSince(long lastModifiedTimestamp)
validateIfNoneMatchback to summary
private boolean validateIfNoneMatch(String eTag)
validateIfUnmodifiedSinceback to summary
private boolean validateIfUnmodifiedSince(long lastModifiedTimestamp)