简介

  • 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