Spring MVC 提供了一種機制,可以構造和編碼URI -- 使用UriComponentsBuilder和UriComponents。
功能相當於 urlencode()函數,對url進行編碼, 但同時還支持變量替換
UriComponents uriComponents = UriComponentsBuilder.fromUriString(
"http://example.com/hotels/{hotel}/bookings/{booking}").build();
URI uri = uriComponents.expand("42", "21").encode().toUri();
嗯,expand()是用於替換所有的模板變量,encode默認使用UTF8編碼。
注意,UriComponents是不可變的,expand()和encode()都是返回新的實例。
你還可以這樣做:
UriComponents uriComponents = UriComponentsBuilder.newInstance()
.scheme("http").host("example.com").path("/hotels/{hotel}/bookings/{booking}").build()
.expand("42", "21")
.encode();
在Servlet環境中,使用子類ServletUriComponentsBuilder提供的靜態工廠方法可以從一個Servlet request中獲取有用的URI信息:
HttpServletRequest request = ...
// Re-use host, scheme, port, path and query string
// Replace the "accountId" query param
ServletUriComponentsBuilder ucb = ServletUriComponentsBuilder.fromRequest(request)
.replaceQueryParam("accountId", "{id}").build()
.expand("123")
.encode();
https://www.cnblogs.com/larryzeal/p/6131664.html
