Как получить URL клиента - PullRequest
       16

Как получить URL клиента

3 голосов
/ 19 января 2010

Я отправляю запрос со страницы Display.jsp на страницу TrialShow.jsp, но всякий раз, когда я вызываю ${pageContext.request.requestURL} на странице JSP TrialShow, я получаю http://localhost:8081/newjsp1/TrialShow.jsp в качестве вывода. Как я могу отобразить http://localhost:8081/newjsp1/Display.jsp на странице JSP TrialShow?

Ответы [ 2 ]

8 голосов
/ 19 января 2010

То есть, вы хотите, чтобы URL страницы, вызвавшей текущую страницу, был заполнен полноценным HTTP-запросом?Я предполагаю, что нет средств для форварда, потому что вы обычно не используете JSP для этого (так как это потенциально может привести к IllegalStateException: Response already committed), а также, с форвардом, ваше требование будет работать так, как вы хотите.

Самый простой способ и лучшая ставка - получить заголовок HTTP Referer (да, включая легендарную опечатку).Вы можете получить его в EL следующим образом:

${header.referer}

Я сказал «лучшая ставка», потому что клиенты не обязаны заполнять заголовок реферера.Большинство браузеров отправляют их вместе, но имейте в виду, что это значение полностью контролируется клиентом, поэтому клиент (или любое установленное клиентом программное обеспечение с некоторым конкретным программным обеспечением Norton в качестве известного примера) может подделать или даже полностью удалитьзначение заголовка.

Немного более надежный способ - позволить исходной странице передать свой URL в качестве (скрытого) параметра запроса.Например,

<input type="hidden" name="from" value="${pageContext.request.requestURI}">

Таким образом, он доступен на следующей странице по

${param.from}

Я сказал «бит», потому что клиент все еще может изменить его, но теперь вы не зависите отконкретная среда клиента больше.Вам все еще нужно помнить, что вы не должны использовать это значение в деловых целях.Используйте его по максимуму для статистики или отладки.

5 голосов
/ 19 января 2010

Использование ${requestScope['javax.servlet.forward.request_uri']}

РЕДАКТИРОВАНИЕ: исправленный синтаксис

РЕДАКТИРОВАТЬ: Это работает, если вы перенаправили запрос на второй JSP (например, используя <jsp:forward .../>)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...