Package org.springframework.web.util
Class UriUtils
java.lang.Object
org.springframework.web.util.UriUtils
Utility methods for URI encoding and decoding based on RFC 3986.
There are two types of encode methods:
"encodeXyz"
-- these encode a specific URI component (for example, path, query) by percent encoding illegal characters, which includes non-US-ASCII characters, and also characters that are otherwise illegal within the given URI component type, as defined in RFC 3986. The effect of this method, with regards to encoding, is comparable to using the multi-argument constructor ofURI
."encode"
and"encodeUriVariables"
-- these can be used to encode URI variable values by percent encoding all characters that are either illegal, or have any reserved meaning, anywhere within a URI.
- Since:
- 3.0
- Author:
- Arjen Poutsma, Juergen Hoeller, Rossen Stoyanchev
- See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic String
Decode the given encoded URI component.static String
Decode the given encoded URI component.static String
Variant ofencode(String, Charset)
with a String charset.static String
Encode all characters that are either illegal, or have any reserved meaning, anywhere within a URI, as defined in RFC 3986.static String
encodeAuthority
(String authority, String encoding) Encode the given URI authority with the given encoding.static String
encodeAuthority
(String authority, Charset charset) Encode the given URI authority with the given encoding.static String
encodeFragment
(String fragment, String encoding) Encode the given URI fragment with the given encoding.static String
encodeFragment
(String fragment, Charset charset) Encode the given URI fragment with the given encoding.static String
encodeHost
(String host, String encoding) Encode the given URI host with the given encoding.static String
encodeHost
(String host, Charset charset) Encode the given URI host with the given encoding.static String
encodePath
(String path, String encoding) Encode the given URI path with the given encoding.static String
encodePath
(String path, Charset charset) Encode the given URI path with the given encoding.static String
encodePathSegment
(String segment, String encoding) Encode the given URI path segment with the given encoding.static String
encodePathSegment
(String segment, Charset charset) Encode the given URI path segment with the given encoding.static String
encodePort
(String port, String encoding) Encode the given URI port with the given encoding.static String
encodePort
(String port, Charset charset) Encode the given URI port with the given encoding.static String
encodeQuery
(String query, String encoding) Encode the given URI query with the given encoding.static String
encodeQuery
(String query, Charset charset) Encode the given URI query with the given encoding.static String
encodeQueryParam
(String queryParam, String encoding) Encode the given URI query parameter with the given encoding.static String
encodeQueryParam
(String queryParam, Charset charset) Encode the given URI query parameter with the given encoding.static MultiValueMap<String,
String> encodeQueryParams
(MultiValueMap<String, String> params) Encode the query parameters from the givenMultiValueMap
with UTF-8.static String
encodeScheme
(String scheme, String encoding) Encode the given URI scheme with the given encoding.static String
encodeScheme
(String scheme, Charset charset) Encode the given URI scheme with the given encoding.static Object[]
encodeUriVariables
(Object... uriVariables) Convenience method to applyencode(String, Charset)
to all given URI variable values.encodeUriVariables
(Map<String, ?> uriVariables) Convenience method to applyencode(String, Charset)
to all given URI variable values.static String
encodeUserInfo
(String userInfo, String encoding) Encode the given URI user info with the given encoding.static String
encodeUserInfo
(String userInfo, Charset charset) Encode the given URI user info with the given encoding.static String
extractFileExtension
(String path) Extract the file extension from the given URI path.
-
Constructor Details
-
UriUtils
public UriUtils()
-
-
Method Details
-
encodeScheme
Encode the given URI scheme with the given encoding.- Parameters:
scheme
- the scheme to be encodedencoding
- the character encoding to encode to- Returns:
- the encoded scheme
-
encodeScheme
Encode the given URI scheme with the given encoding.- Parameters:
scheme
- the scheme to be encodedcharset
- the character encoding to encode to- Returns:
- the encoded scheme
- Since:
- 5.0
-
encodeAuthority
Encode the given URI authority with the given encoding.- Parameters:
authority
- the authority to be encodedencoding
- the character encoding to encode to- Returns:
- the encoded authority
-
encodeAuthority
Encode the given URI authority with the given encoding.- Parameters:
authority
- the authority to be encodedcharset
- the character encoding to encode to- Returns:
- the encoded authority
- Since:
- 5.0
-
encodeUserInfo
Encode the given URI user info with the given encoding.- Parameters:
userInfo
- the user info to be encodedencoding
- the character encoding to encode to- Returns:
- the encoded user info
-
encodeUserInfo
Encode the given URI user info with the given encoding.- Parameters:
userInfo
- the user info to be encodedcharset
- the character encoding to encode to- Returns:
- the encoded user info
- Since:
- 5.0
-
encodeHost
Encode the given URI host with the given encoding.- Parameters:
host
- the host to be encodedencoding
- the character encoding to encode to- Returns:
- the encoded host
-
encodeHost
Encode the given URI host with the given encoding.- Parameters:
host
- the host to be encodedcharset
- the character encoding to encode to- Returns:
- the encoded host
- Since:
- 5.0
-
encodePort
Encode the given URI port with the given encoding.- Parameters:
port
- the port to be encodedencoding
- the character encoding to encode to- Returns:
- the encoded port
-
encodePort
Encode the given URI port with the given encoding.- Parameters:
port
- the port to be encodedcharset
- the character encoding to encode to- Returns:
- the encoded port
- Since:
- 5.0
-
encodePath
Encode the given URI path with the given encoding.- Parameters:
path
- the path to be encodedencoding
- the character encoding to encode to- Returns:
- the encoded path
-
encodePath
Encode the given URI path with the given encoding.- Parameters:
path
- the path to be encodedcharset
- the character encoding to encode to- Returns:
- the encoded path
- Since:
- 5.0
-
encodePathSegment
Encode the given URI path segment with the given encoding.- Parameters:
segment
- the segment to be encodedencoding
- the character encoding to encode to- Returns:
- the encoded segment
-
encodePathSegment
Encode the given URI path segment with the given encoding.- Parameters:
segment
- the segment to be encodedcharset
- the character encoding to encode to- Returns:
- the encoded segment
- Since:
- 5.0
-
encodeQuery
Encode the given URI query with the given encoding.- Parameters:
query
- the query to be encodedencoding
- the character encoding to encode to- Returns:
- the encoded query
-
encodeQuery
Encode the given URI query with the given encoding.- Parameters:
query
- the query to be encodedcharset
- the character encoding to encode to- Returns:
- the encoded query
- Since:
- 5.0
-
encodeQueryParam
Encode the given URI query parameter with the given encoding.- Parameters:
queryParam
- the query parameter to be encodedencoding
- the character encoding to encode to- Returns:
- the encoded query parameter
-
encodeQueryParam
Encode the given URI query parameter with the given encoding.- Parameters:
queryParam
- the query parameter to be encodedcharset
- the character encoding to encode to- Returns:
- the encoded query parameter
- Since:
- 5.0
-
encodeQueryParams
Encode the query parameters from the givenMultiValueMap
with UTF-8.This can be used with
UriComponentsBuilder.queryParams(MultiValueMap)
when building a URI from an already encoded template.MultiValueMap<String, String> params = new LinkedMultiValueMap<>(2); // add to params... ServletUriComponentsBuilder.fromCurrentRequest() .queryParams(UriUtils.encodeQueryParams(params)) .build(true) .toUriString();
- Parameters:
params
- the parameters to encode- Returns:
- a new
MultiValueMap
with the encoded names and values - Since:
- 5.2.3
-
encodeFragment
Encode the given URI fragment with the given encoding.- Parameters:
fragment
- the fragment to be encodedencoding
- the character encoding to encode to- Returns:
- the encoded fragment
-
encodeFragment
Encode the given URI fragment with the given encoding.- Parameters:
fragment
- the fragment to be encodedcharset
- the character encoding to encode to- Returns:
- the encoded fragment
- Since:
- 5.0
-
encode
Variant ofencode(String, Charset)
with a String charset.- Parameters:
source
- the String to be encodedencoding
- the character encoding to encode to- Returns:
- the encoded String
-
encode
Encode all characters that are either illegal, or have any reserved meaning, anywhere within a URI, as defined in RFC 3986. This is useful to ensure that the given String will be preserved as-is and will not have any impact on the structure or meaning of the URI.- Parameters:
source
- the String to be encodedcharset
- the character encoding to encode to- Returns:
- the encoded String
- Since:
- 5.0
-
encodeUriVariables
Convenience method to applyencode(String, Charset)
to all given URI variable values.- Parameters:
uriVariables
- the URI variable values to be encoded- Returns:
- the encoded String
- Since:
- 5.0
-
encodeUriVariables
Convenience method to applyencode(String, Charset)
to all given URI variable values.- Parameters:
uriVariables
- the URI variable values to be encoded- Returns:
- the encoded String
- Since:
- 5.0
-
decode
Decode the given encoded URI component.See
StringUtils.uriDecode(String, Charset)
for the decoding rules.- Parameters:
source
- the encoded Stringencoding
- the character encoding to use- Returns:
- the decoded value
- Throws:
IllegalArgumentException
- when the given source contains invalid encoded sequences- See Also:
-
decode
Decode the given encoded URI component.See
StringUtils.uriDecode(String, Charset)
for the decoding rules.- Parameters:
source
- the encoded Stringcharset
- the character encoding to use- Returns:
- the decoded value
- Throws:
IllegalArgumentException
- when the given source contains invalid encoded sequences- Since:
- 5.0
- See Also:
-
extractFileExtension
Extract the file extension from the given URI path.- Parameters:
path
- the URI path (for example, "/products/index.html")- Returns:
- the extracted file extension (for example, "html")
- Since:
- 4.3.2
-