如何在spring mvc中构建动态url

时间:2015-05-29 07:22:34

标签: java spring spring-mvc spring-data spring-data-rest

我正在尝试发送一个我将基于某些动态值生成的URL。但我不想对其进行硬编码,也不想使用响应或请求对象。

实施例: - http://localhost:8585/app/image/ {ID} / {publicUrl} / {文件名}

所以我想得到第一部分,即http://localhost:8585/app/image/ 仅来自Spring框架。我将提供其余的东西,如id,publicUrl,filename,以便它可以生成一个完整的绝对URL。

如何在Spring MVC中完成。

我正在使用spring MVC,spring Data,Spring Rest,Hibernate。

3 个答案:

答案 0 :(得分:10)

您是在尝试收听网址还是尝试构建外部使用的网址?

如果是后者,您可以使用URIComponentsBuilder在Spring中构建动态URL。例如:

UriComponents uri = UriComponentsBuilder
                    .fromHttpUrl("http://localhost:8585/app/image/{id}/{publicUrl}/{filename}")
                    .buildAndExpand("someId", "somePublicUrl", "someFilename");

String urlString = uri.toUriString();

答案 1 :(得分:3)

只是Neil McGuigan的answer的补充,但没有硬编码架构,域名,端口&等...

可以这样做:

import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
...
ServletUriComponentsBuilder.fromCurrentRequest.queryParam("page", 1).toUriString();

想象原始请求是

https://myapp.mydomain.com/api/resources

此代码将生成以下网址

https://myapp.mydomain.com/api/resources?page=1

希望这有帮助。

答案 2 :(得分:0)