Как получить исходный url-адрес запроса от сервлета / jsp после нескольких пересылок сервлета
Я работаю над приложением для бронирования круиза, используя распорки / плитки, которые используют Несколько внутренних сервлетов/jsp вперед, чтобы достичь нужного jsp для отображения. Но, как только вы достигнете конечного jsp, который используется для визуализации страницы, вызов ${pageContext.request.requestURL}
в этом jsp возвращает путь этого jsp.
Например
- первоначальному запросу: /бронирование/getCruiseDetails
- перенаправляется на: / booking / validateCruiseDeteails.jsp
- пересылается в: /бронирование/методы validateuser.jsp
- наконец получает перенаправление на: /booking/showCruiseDetails.jsp
Итак, в /booking/showCruiseDetails.jsp когда я вызываю ${pageContext.request.requestURL}
I
get /booking/showCruiseDetails.jsp
Как вы получаете исходный (клиентский) url-адрес запроса от jsp, который был достигнут через Несколько вперед. Я нашел следующие сообщения на stackoverflow, которые намекают на решение здесь и здесь , но они не касаются того, как вы будете искать исходный url-адрес запроса после того, как произойдет несколько переадресаций.
5 ответов:
Я нашел лучший ответ в этом посте [ Как вы обнаруживаете URL в сервлете Java при пересылке в JSP?]
Для целевого использования JSP:
request.getAttribute("javax.servlet.forward.request_uri")
Чтобы узнать, какой был исходный URL.
Это не требует от вас каких-либо дополнительных действий на сервлете пересылки
Вы можете использовать фильтр, чтобы поместить исходный адрес в атрибут запроса, а затем прочитать его из jsp
Фильтр, сопоставленный с /booking / * execute:
request.setAttribute("origin", request.getRequestURL());
Jsp:
${pageContext.request.attribute["origin"]}
Это работает, потому что фильтр установил диспетчер запросов по умолчанию. Это означает, что фильтр выполняется только для прямых запросов клиента, а не для пересылки / включения
${requestScope["javax.servlet.forward.request_uri"]}
Или с одинарными кавычками
${requestScope['javax.servlet.forward.request_uri']}
Вместо этого рассмотрите возможность использования фильтров сервлетов для проверки информации. Это означает, что вы можете избежать пересылки проверки и просто оставаться в одном файле JSP.
Вы можете показать его без использования ссылки на боб со следующим:
<h:outputText value="#{requestScope['javax.servlet.forward.request_uri']}" />
Конечно, вам нужно сопоставить страницу 404 в вашем интернете.однако xml-файл.
<error-page> <error-code>404</error-code> <location>/xhtml/pg/error/404.xhtml</location> </error-page>