【问题标题】:How to get actual URL and transform it in Spring?如何在 Spring 中获取实际 URL 并对其进行转换?
【发布时间】:2018-06-05 10:00:47
【问题描述】:

我想获取实际的 URL,对其进行解析并添加参数 - paramvalue。这就是我所做的一切,我不知道如何继续。

@Autowired
private HttpServletRequest request;

public String setParameter(String param, String value){
    StringBuilder sb = new StringBuilder();
    sb.append("&")
    .append(param)
    .append("=")
    .append(value);

    return sb.toString();
}

【问题讨论】:

    标签: java spring http parsing url


    【解决方案1】:

    根据您使用的配置/实现/spring 版本,您有很多选择。 我在下面提到的第一个选项可能最适合您的需求。


    第一个选项

    创建一个方法并将请求作为参数传递。您不需要使用 StringBuilder(样板代码),但如果您愿意/需要,您可以使用。

    public String makeUrl(HttpServletRequest request, String param, String value) {
        return request.getRequestURL().toString() + "&" + param + "=" + value;
    }
    

    第二个选项

    要获取当前 URL,您还可以使用绑定到当前线程的请求

    ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest()
    

    添加

    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>
    

    web.xml 文件/通过在 Spring Boot 中使用合适的注释。


    第三个选项

    您可以使用 ServletUriComponentsBuilder/UriComponentsBuilder 并使用以下文档中的方法构建新 URL。

    你的例子:

    public String makeUrl(HttpServletRequest request, String param, String value) {
        ServletUriComponentsBuilder builder = ServletUriComponentsBuilder.fromCurrentRequestUri();
        builder.queryParam(param, value);
        URI uri = builder.build().toUri();
        return uri.toString();
    }
    

    文档:

    ServletUriComponentsBuilder

    UriComponentsBuilder

    【讨论】:

    • 真的很感谢他们解决了我的问题,希望你有一个美好的一天:D
    • 没问题,你也一样! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    相关资源
    最近更新 更多