简介
- spring mvc提供了一种机制,可以构造和编码URI,即使用UriComponentsBuilder和UriComponents。功能相当于uelencode()函数,对url进行编码(比如请求中含有空格时编码为%20),同时支持变量替换。
- 需引入spring-web依赖。
示例
UriComponents uriComponents=UriComponentsBuilder
.fromHttpUrl("http://localhost:8080//hello")
.queryParams(params).build() //params是个Map
String uri=uriComponents.toUriString();
- expand(): 替换参数。
- encode(): 编码,默认使用utf-8。
UriComponents uriComponents = UriComponentsBuilder
.fromUriString("http://example.com/hotels/{hotel}/bookings/{booking}").build();
URI uri = uriComponents.expand("42", "21").encode().toUri();
- 注意:UriComponents是不可变的,expand()和encode()返回新的实例。
- 上述例子也可以这样实现:
UriComponents uriComponents = UriComponentsBuilder.newInstance()
.scheme("http").host("example.com").path("/hotels/{hotel}/bookings/{booking}").build()
.expand("42", "21")
.encode();
- 参考文章
- 代码示例:ideaProjects/shiro-chapter20/test/ClientTest