Top Description Inners Fields Constructors Methods
org.springframework.web.util

public abstract Class ServletRequestPathUtils

extends Object
Class Inheritance
Imports
java.nio.charset.StandardCharsets, java.util.List, jakarta.servlet.RequestDispatcher, .ServletRequest, jakarta.servlet.http.HttpServletMapping, .HttpServletRequest, .MappingMatch, org.springframework.http.server.PathContainer, .RequestPath, org.springframework.lang.Nullable, org.springframework.util.Assert, .ObjectUtils, .StringUtils

Utility class to assist with preparation and access to the lookup path for request mapping purposes. This can be the parsed RequestPath representation of the path when use of parsed patterns is enabled or a String path for use with a org.springframework.util.PathMatcher otherwise.
Author
Rossen Stoyanchev
Since
5.3

Nested and Inner Type Summary

Modifier and TypeClass and Description
private static class
ServletRequestPathUtils.ServletRequestPath

Simple wrapper around the default RequestPath implementation that supports a servletPath as an additional prefix to be omitted from pathWithinApplication().

Field Summary

Modifier and TypeField and Description
public static final String
PATH_ATTRIBUTE

Name of Servlet request attribute that holds the parsed RequestPath.

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public static void
clearParsedRequestPath(ServletRequest request)

Remove the request attribute PATH_ATTRIBUTE that holds a previously parsed and cached RequestPath.

public static Object

Returns:

a String lookupPath or a RequestPath
getCachedPath
(ServletRequest
the current request
request
)

Return either a pre-resolved String lookupPath or a pre-parsed RequestPath.

public static String

Returns:

the full request mapping path as a String
getCachedPathValue
(ServletRequest
the current request
request
)

Variant of getCachedPath(ServletRequest) that returns the path for request mapping as a String.

public static RequestPath
getParsedRequestPath(ServletRequest request)

Return a previously parsed and cached RequestPath.

public static boolean

Returns:

whether a pre-resolved or pre-parsed path is available
hasCachedPath
(ServletRequest
the current request
request
)

Check for a previously resolved String lookupPath or a previously parsed RequestPath.

public static boolean
hasParsedRequestPath(ServletRequest request)

Check for a previously parsed and cached RequestPath.

public static RequestPath
parseAndCache(HttpServletRequest request)

Parse the requestURI to a RequestPath and save it in the request attribute PATH_ATTRIBUTE for subsequent use with parsed patterns.

public static void
setParsedRequestPath(RequestPath
the value to set to, or if null the cache value is cleared.
requestPath
,
ServletRequest
the current request
request
)

Set the cached, parsed RequestPath to the given value.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

PATH_ATTRIBUTEback to summary
public static final String PATH_ATTRIBUTE

Name of Servlet request attribute that holds the parsed RequestPath.

Constructor Detail

ServletRequestPathUtilsback to summary
public ServletRequestPathUtils()

Method Detail

clearParsedRequestPathback to summary
public static void clearParsedRequestPath(ServletRequest request)

Remove the request attribute PATH_ATTRIBUTE that holds a previously parsed and cached RequestPath.

getCachedPathback to summary
public static Object getCachedPath(ServletRequest request)

Return either a pre-resolved String lookupPath or a pre-parsed RequestPath.

In Spring MVC, when at least one HandlerMapping has parsed PathPatterns enabled, the DispatcherServlet parses and caches the RequestPath which can be also done even earlier with ServletRequestPathFilter. In other cases where HandlerMappings use String pattern matching with PathMatcher, the String lookupPath is resolved separately in each HandlerMapping.

Parameters
request:ServletRequest

the current request

Returns:Object

a String lookupPath or a RequestPath

Exceptions
IllegalArgumentException:
if neither is available
getCachedPathValueback to summary
public static String getCachedPathValue(ServletRequest request)

Variant of getCachedPath(ServletRequest) that returns the path for request mapping as a String.

If the cached path is a pre-parsed RequestPath then the returned String path value is encoded and with path parameters removed.

If the cached path is a pre-resolved String lookupPath, then the returned String path value depends on how UrlPathHelper that resolved is configured.

Parameters
request:ServletRequest

the current request

Returns:String

the full request mapping path as a String

getParsedRequestPathback to summary
public static RequestPath getParsedRequestPath(ServletRequest request)

Return a previously parsed and cached RequestPath.

Exceptions
IllegalArgumentException:
if not found
hasCachedPathback to summary
public static boolean hasCachedPath(ServletRequest request)

Check for a previously resolved String lookupPath or a previously parsed RequestPath.

Parameters
request:ServletRequest

the current request

Returns:boolean

whether a pre-resolved or pre-parsed path is available

hasParsedRequestPathback to summary
public static boolean hasParsedRequestPath(ServletRequest request)

Check for a previously parsed and cached RequestPath.

parseAndCacheback to summary
public static RequestPath parseAndCache(HttpServletRequest request)

Parse the requestURI to a RequestPath and save it in the request attribute PATH_ATTRIBUTE for subsequent use with parsed patterns.

The returned RequestPath will have both the contextPath and any servletPath prefix omitted from the pathWithinApplication it exposes.

This method is typically called by the DispatcherServlet to determine if any HandlerMapping indicates that it uses parsed patterns. After that the pre-parsed and cached RequestPath can be accessed through getParsedRequestPath(ServletRequest).

setParsedRequestPathback to summary
public static void setParsedRequestPath(RequestPath requestPath, ServletRequest request)

Set the cached, parsed RequestPath to the given value.

Parameters
requestPath:RequestPath

the value to set to, or if null the cache value is cleared.

request:ServletRequest

the current request

Since
5.3.3
org.springframework.web.util back to summary

private final Class ServletRequestPathUtils.ServletRequestPath

extends Object
implements RequestPath
Class Inheritance
  • java.lang.Object
  • org.springframework.web.util.ServletRequestPathUtils.ServletRequestPath
All Implemented Interfaces
org.springframework.http.server.RequestPath, org.springframework.http.server.PathContainer

Simple wrapper around the default RequestPath implementation that supports a servletPath as an additional prefix to be omitted from pathWithinApplication().

Field Summary

Modifier and TypeField and Description
private final PathContainer
private final RequestPath

Constructor Summary

AccessConstructor and Description
private
ServletRequestPath(String rawPath, String contextPath, String servletPathPrefix)

Method Summary

Modifier and TypeMethod and Description
public PathContainer
contextPath()

Implements org.springframework.http.server.RequestPath.contextPath.

Returns the portion of the URL path that represents the application.

public List<PathContainer.Element>
elements()

Implements org.springframework.http.server.PathContainer.elements.

The contained path elements, either Separator or PathSegment.

public boolean
equals(Object
the reference object with which to compare.
other
)

Overrides java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

private static String
public int
hashCode()

Overrides java.lang.Object.hashCode.

Returns a hash code value for this object.

public RequestPath
modifyContextPath(String
the new context path
contextPath
)

Implements org.springframework.http.server.RequestPath.modifyContextPath.

Return a new RequestPath instance with a modified context path.

public static RequestPath
public PathContainer
pathWithinApplication()

Implements org.springframework.http.server.RequestPath.pathWithinApplication.

The portion of the request path after the context path which is typically used for request mapping within the application.

public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.

public String
value()

Implements org.springframework.http.server.PathContainer.value.

The original path from which this instance was parsed.

Inherited from java.lang.Object:
clonefinalizegetClassnotifynotifyAllwaitwaitwait

Field Detail

contextPathback to summary
private final PathContainer contextPath
requestPathback to summary
private final RequestPath requestPath

Constructor Detail

ServletRequestPathback to summary
private ServletRequestPath(String rawPath, String contextPath, String servletPathPrefix)

Method Detail

contextPathback to summary
public PathContainer contextPath()

Implements org.springframework.http.server.RequestPath.contextPath.

Doc from org.springframework.http.server.RequestPath.contextPath.

Returns the portion of the URL path that represents the application. The context path is always at the beginning of the path and starts but does not end with "/". It is shared for URLs of the same application.

The context path may come from the underlying runtime API such as when deploying as a WAR to a Servlet container or it may be assigned in a WebFlux application through the use of ContextPathCompositeHandler.

Annotations
@Override
elementsback to summary
public List<PathContainer.Element> elements()

Implements org.springframework.http.server.PathContainer.elements.

Doc from org.springframework.http.server.PathContainer.elements.

The contained path elements, either Separator or PathSegment.

Annotations
@Override
equalsback to summary
public boolean equals(Object other)

Overrides java.lang.Object.equals.

Doc from java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
other:Object

the reference object with which to compare.

Returns:boolean

true if this object is the same as the obj argument; false otherwise.

Annotations
@Override
getServletPathPrefixback to summary
private static String getServletPathPrefix(HttpServletRequest request)
Annotations
@Nullable
hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Doc from java.lang.Object.hashCode.

Returns a hash code value for this object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
Returns:int

a hash code value for this object

Annotations
@Override
modifyContextPathback to summary
public RequestPath modifyContextPath(String contextPath)

Implements org.springframework.http.server.RequestPath.modifyContextPath.

Doc from org.springframework.http.server.RequestPath.modifyContextPath.

Return a new RequestPath instance with a modified context path. The new context path must match 0 or more path segments at the start.

Parameters
contextPath:String

the new context path

Returns:RequestPath

a new RequestPath instance

Annotations
@Override
parseback to summary
public static RequestPath parse(HttpServletRequest request)
pathWithinApplicationback to summary
public PathContainer pathWithinApplication()

Implements org.springframework.http.server.RequestPath.pathWithinApplication.

Doc from org.springframework.http.server.RequestPath.pathWithinApplication.

The portion of the request path after the context path which is typically used for request mapping within the application.

Annotations
@Override
toStringback to summary
public String toString()

Overrides java.lang.Object.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
valueback to summary
public String value()

Implements org.springframework.http.server.PathContainer.value.

Doc from org.springframework.http.server.PathContainer.value.

The original path from which this instance was parsed.

Annotations
@Override