У вас есть много опций в зависимости от конфигурации / реализации / версии 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();
}
Документация:
ServletUriКомпонентыBuilder
UriComponentsBuilder