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