Package org.springframework.web.servlet.support

# Class ServletUriComponentsBuilder

java.lang.Object
org.springframework.web.util.UriComponentsBuilder
org.springframework.web.servlet.support.ServletUriComponentsBuilder

All Implemented Interfaces:
  `Cloneable`, `org.springframework.web.util.UriBuilder`

public class ServletUriComponentsBuilder extends org.springframework.web.util.UriComponentsBuilder
UriComponentsBuilder with additional static factory methods to create links based on the current HttpServletRequest.

Note: As of 5.1, methods in this class do not extract `"Forwarded"` and `"X-Forwarded-*"` headers that specify the client-originated address. Please, use `ForwardedHeaderFilter`, or similar from the underlying server, to extract and use such headers, or to discard them.

Since:
  3.1
Author:
  Rossen Stoyanchev

## Nested Class Summary

## Nested classes/interfaces inherited from class org.springframework.web.util.UriComponentsBuilder

`org.springframework.web.util.UriComponentsBuilder.ParserType`

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`ServletUriComponentsBuilder()`
Default constructor.
`protected`
`ServletUriComponentsBuilder(ServletUriComponentsBuilder other)`
Create a deep copy of the given ServletUriComponentsBuilder.

## Method Summary

Modifier and Type
Method
Description
`ServletUriComponentsBuilder`
`cloneBuilder()`
`static ServletUriComponentsBuilder`
`fromContextPath(HttpServletRequest request)`
Prepare a builder from the host, port, scheme, and context path of the given HttpServletRequest.
`static ServletUriComponentsBuilder`
`fromCurrentContextPath()`
Same as `fromContextPath(HttpServletRequest)` except the request is obtained through `RequestContextHolder`.
`static ServletUriComponentsBuilder`
`fromCurrentRequest()`
Same as `fromRequest(HttpServletRequest)` except the request is obtained through `RequestContextHolder`.
`static ServletUriComponentsBuilder`
`fromCurrentRequestUri()`
Same as `fromRequestUri(HttpServletRequest)` except the request is obtained through `RequestContextHolder`.
`static ServletUriComponentsBuilder`
`fromCurrentServletMapping()`
Same as `fromServletMapping(HttpServletRequest)` except the request is obtained through `RequestContextHolder`.
`static ServletUriComponentsBuilder`
`fromRequest(HttpServletRequest request)`
Prepare a builder by copying the scheme, host, port, path, and query string of an HttpServletRequest.
`static ServletUriComponentsBuilder`
`fromRequestUri(HttpServletRequest request)`
Prepare a builder from the host, port, scheme, and path (but not the query) of the HttpServletRequest.
`static ServletUriComponentsBuilder`
`fromServletMapping(HttpServletRequest request)`
Prepare a builder from the host, port, scheme, context path, and servlet mapping of the given HttpServletRequest.
`protected static HttpServletRequest`
`getCurrentRequest()`
Obtain current request through `RequestContextHolder`.
`String`
`removePathExtension()`
Remove any path extension from the `requestURI`.

### Methods inherited from class org.springframework.web.util.UriComponentsBuilder

`build, build, build, build, buildAndExpand, buildAndExpand, clone, encode, encode, fragment, fromHttpRequest, fromHttpUrl, fromOriginHeader, fromPath, fromUri, fromUriString, fromUriString, host, newInstance, path, pathSegment, port, port, query, queryParam, queryParam, queryParamIfPresent, queryParams, replacePath, replaceQuery, replaceQueryParam, replaceQueryParam, replaceQueryParams, scheme, schemeSpecificPart, toUriString, uri, uriComponents, uriVariables, userInfo`

### Methods inherited from class java.lang.Object

`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### ServletUriComponentsBuilder

protected ServletUriComponentsBuilder()
Default constructor. Protected to prevent direct instantiation.

See Also:
  - `fromContextPath(HttpServletRequest)`
  - `fromServletMapping(HttpServletRequest)`
  - `fromRequest(HttpServletRequest)`
  - `fromCurrentContextPath()`
  - `fromCurrentServletMapping()`
  - `fromCurrentRequest()`

### ServletUriComponentsBuilder

protected ServletUriComponentsBuilder(ServletUriComponentsBuilder other)
Create a deep copy of the given ServletUriComponentsBuilder.

Parameters:
  `other` - the other builder to copy from

## Method Details

### fromContextPath

public static ServletUriComponentsBuilder fromContextPath(HttpServletRequest request)
Prepare a builder from the host, port, scheme, and context path of the given HttpServletRequest.

### fromServletMapping

public static ServletUriComponentsBuilder fromServletMapping(HttpServletRequest request)
Prepare a builder from the host, port, scheme, context path, and servlet mapping of the given HttpServletRequest.

If the servlet is mapped by name, for example, `"/main/*"`, the path will end with "/main". If the servlet is mapped otherwise, for example, `"/"` or `"*.do"`, the result will be the same as if calling `fromContextPath(HttpServletRequest)`.

### fromRequestUri

public static ServletUriComponentsBuilder fromRequestUri(HttpServletRequest request)
Prepare a builder from the host, port, scheme, and path (but not the query) of the HttpServletRequest.

### fromRequest

public static ServletUriComponentsBuilder fromRequest(HttpServletRequest request)
Prepare a builder by copying the scheme, host, port, path, and query string of an HttpServletRequest.

### fromCurrentContextPath

public static ServletUriComponentsBuilder fromCurrentContextPath()
Same as `fromContextPath(HttpServletRequest)` except the request is obtained through `RequestContextHolder`.

### fromCurrentServletMapping

public static ServletUriComponentsBuilder fromCurrentServletMapping()
Same as `fromServletMapping(HttpServletRequest)` except the request is obtained through `RequestContextHolder`.

### fromCurrentRequestUri

public static ServletUriComponentsBuilder fromCurrentRequestUri()
Same as `fromRequestUri(HttpServletRequest)` except the request is obtained through `RequestContextHolder`.

### fromCurrentRequest

public static ServletUriComponentsBuilder fromCurrentRequest()
Same as `fromRequest(HttpServletRequest)` except the request is obtained through `RequestContextHolder`.

### getCurrentRequest

protected static HttpServletRequest getCurrentRequest()
Obtain current request through `RequestContextHolder`.

### removePathExtension

@Nullable public String removePathExtension()
Remove any path extension from the `requestURI`. This method must be invoked before any calls to `UriComponentsBuilder.path(String)` or `UriComponentsBuilder.pathSegment(String...)`.

     GET http://www.foo.example/rest/books/6.json

     ServletUriComponentsBuilder builder = ServletUriComponentsBuilder.fromRequestUri(this.request);
     String ext = builder.removePathExtension();
     String uri = builder.path("/pages/1.{ext}").buildAndExpand(ext).toUriString();
     assertEquals("http://www.foo.example/rest/books/6/pages/1.json", result);

Returns:
  the removed path extension for possible re-use, or `null`
Since:
  4.0

### cloneBuilder

public ServletUriComponentsBuilder cloneBuilder()

Overrides:
  `cloneBuilder` in class `org.springframework.web.util.UriComponentsBuilder`