UriComponentsBuilder和UriComponents url编码
Posted 47gamer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UriComponentsBuilder和UriComponents url编码相关的知识,希望对你有一定的参考价值。
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();
以上是关于UriComponentsBuilder和UriComponents url编码的主要内容,如果未能解决你的问题,请参考以下文章
java.lang.IllegalStateException: No instances www.xxxx.com available for localhost