Как получить реальный URL и преобразовать его в Spring? - PullRequest
0 голосов
/ 05 июня 2018

Я хочу получить реальный URL, разобрать его и добавить параметры - param и value.Это все, что я сделал, я не знаю, как продолжить.

@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();
}

1 Ответ

0 голосов
/ 05 июня 2018

У вас есть много опций в зависимости от конфигурации / реализации / версии 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

...