HttpServletRequest для завершения URL

Я имею HttpServletRequest объект.

Как я получаю полный и точный URL, который заставил этот вызов прибывать в мой сервлет?

Или по крайней мере максимально точно, как существуют, возможно, вещи, которые могут быть повторно созданы (порядок параметров, возможно).

229
задан Shashank Agrawal 14 January 2016 в 21:24
поделиться

4 ответа

HttpServletRequest имеет следующие методы:

  • getRequestURL () - возвращает часть полного URL-адреса перед запросом символ разделителя строк ?
  • getQueryString () - возвращает часть полного URL-адреса после символа разделителя строки запроса ?

Итак, чтобы получить полный URL-адрес, просто выполните:

public static String getFullURL(HttpServletRequest request) {
    StringBuilder requestURL = new StringBuilder(request.getRequestURL().toString());
    String queryString = request.getQueryString();

    if (queryString == null) {
        return requestURL.toString();
    } else {
        return requestURL.append('?').append(queryString).toString();
    }
}
359
ответ дан 23 November 2019 в 03:43
поделиться

HttpUtil устарел, это правильный метод

StringBuffer url = req.getRequestURL();
String queryString = req.getQueryString();
if (queryString != null) {
    url.append('?');
    url.append(queryString);
}
String requestURL = url.toString();
6
ответ дан 23 November 2019 в 03:43
поделиться

Объединение результатов getRequestURL () и getQueryString () должно дать желаемый результат.

5
ответ дан 23 November 2019 в 03:43
поделиться
// http://hostname.com/mywebapp/servlet/MyServlet/a/b;c=123?d=789

public static String getUrl(HttpServletRequest req) {
    String reqUrl = req.getRequestURL().toString();
    String queryString = req.getQueryString();   // d=789
    if (queryString != null) {
        reqUrl += "?"+queryString;
    }
    return reqUrl;
}
27
ответ дан 23 November 2019 в 03:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: