У меня есть HttpServletRequest
объект.
Как получить полный и точный URL-адрес, по которому этот вызов поступил на мой сервлет?
Или, по крайней мере, настолько точно, насколько это возможно, поскольку, возможно, существуют вещи, которые можно восстановить (возможно, порядок параметров).
Ответы:
HttpServletRequest
Имеет следующие методы:getRequestURL()
- возвращает часть полного URL перед символом-разделителем строки запроса?
getQueryString()
- возвращает часть полного URL после символа разделителя строки запроса?
Итак, чтобы получить полный URL, просто сделайте:
источник
Я использую этот метод:
источник
url
он объявлен, создан и используется только внутри метода, поэтому к нему нельзя получить доступ из потоков, отличных от того, который вызвал метод.StringBuffer
для каждого вызова и не делитесь им с другими потоками. Это должно быть изменено, чтобы бытьStringBuilder
.getRequestURI
?источник
StringBuffer
.В проекте Spring вы можете использовать
источник
new ServletServerHttpRequest(request).getURI()
HttpUtil устарел, это правильный метод
источник
Объединение результатов
getRequestURL()
иgetQueryString()
должно дать вам желаемый результат.источник
Вы можете использовать фильтр.
Не забудьте вставить
<dispatcher>FORWARD</dispatcher>
отображение фильтра в web.xmlисточник
Используйте следующие методы для объекта HttpServletRequest
java.lang.String getRequestURI () - возвращает часть URL-адреса этого запроса от имени протокола до строки запроса в первой строке HTTP-запроса.
java.lang.StringBuffer getRequestURL () - Восстанавливает URL, который клиент использовал для выполнения запроса.
java.lang.String getQueryString () - возвращает строку запроса, которая содержится в URL-адресе запроса после пути.
источник
Немного опоздал на вечеринку, но я включил это в свою библиотеку MarkUtils-Web в WebUtils - одобренную Checkstyle и проверенную JUnit:
Возможно, самый быстрый и надежный ответ здесь за Мэттом Баником, но даже его ответ не учитывает возможные нестандартные конфигурации портов с HTTP / HTTPS.
Смотрите также:
источник
Вы можете написать простой однострочник с троичным, и если вы используете шаблон строителя StringBuffer из
.getRequestURL()
:Но это просто синтаксический сахар.
источник