spring-framework / org.springframework.web.servlet.support / ServletUriComponentsBuilder

ServletUriComponentsBuilder

open class ServletUriComponentsBuilder : UriComponentsBuilder

UriComponentsBuilder with additional static factory methods to create links based on the current HttpServletRequest.

Note: This class extracts and uses values from the headers "Forwarded" (RFC 7239), or "X-Forwarded-Host", "X-Forwarded-Port", and "X-Forwarded-Proto" if "Forwarded" is not found, in order to reflect the client-originated protocol and address. As an alternative consider using the org.springframework.web.filter.ForwardedHeaderFilter to have such headers extracted once and removed, or removed only (without being used). See the reference for further information including security considerations.

Author
Rossen Stoyanchev

Since
3.1

Functions

cloneBuilder

open fun cloneBuilder(): ServletUriComponentsBuilder

fromContextPath

open static fun fromContextPath(request: HttpServletRequest): ServletUriComponentsBuilder

Prepare a builder from the host, port, scheme, and context path of the given HttpServletRequest.

Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.

fromCurrentContextPath

open static fun fromCurrentContextPath(): ServletUriComponentsBuilder

Same as #fromContextPath(HttpServletRequest) except the request is obtained through RequestContextHolder.

Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.

fromCurrentRequest

open static fun fromCurrentRequest(): ServletUriComponentsBuilder

Same as #fromRequest(HttpServletRequest) except the request is obtained through RequestContextHolder.

Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.

fromCurrentRequestUri

open static fun fromCurrentRequestUri(): ServletUriComponentsBuilder

Same as #fromRequestUri(HttpServletRequest) except the request is obtained through RequestContextHolder.

Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.

fromCurrentServletMapping

open static fun fromCurrentServletMapping(): ServletUriComponentsBuilder

Same as #fromServletMapping(HttpServletRequest) except the request is obtained through RequestContextHolder.

Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.

fromRequest

open static fun fromRequest(request: HttpServletRequest): ServletUriComponentsBuilder

Prepare a builder by copying the scheme, host, port, path, and query string of an HttpServletRequest.

Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.

fromRequestUri

open static fun fromRequestUri(request: HttpServletRequest): ServletUriComponentsBuilder

Prepare a builder from the host, port, scheme, and path (but not the query) of the HttpServletRequest.

Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.

fromServletMapping

open static fun fromServletMapping(request: HttpServletRequest): ServletUriComponentsBuilder

Prepare a builder from the host, port, scheme, context path, and servlet mapping of the given HttpServletRequest.

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

Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.

removePathExtension

open fun removePathExtension(): String

Remove any path extension from the requestURI. This method must be invoked before any calls to #path(String) or #pathSegment(String...).

 GET http://foo.com/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://foo.com/rest/books/6/pages/1.json", result);