UriComponentsBuilder和UriComponents url编码

2021-01-26 23:12

阅读:467

标签:book   omr   servlet   工厂   spring   let   pre   class   encode   

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编码

标签:book   omr   servlet   工厂   spring   let   pre   class   encode   

原文地址:https://www.cnblogs.com/47Gamer/p/13226185.html


评论


亲,登录后才可以留言!