How to get the original request url from a servlet/jsp after multiple servlet forwards

对着背影说爱祢 提交于 2019-11-30 04:25:03
Lenny Markus

I found a better answer in this post [ How do you detect the URL in a Java Servlet when forwarding to JSP? ]

On the target JSP use:

request.getAttribute("javax.servlet.forward.request_uri")

To find out what the original URL was.

It doesn't require you to take any extra steps on the forwarding servlet

You can use a filter to putting origin address to request attribute and then read it from jsp

Filter mapped to /booking/* execute:

request.setAttribute("origin", request.getRequestURL());

Jsp:

${pageContext.request.attribute["origin"]}

This works because filter has set REQUEST dispatcher by default. It means filter executes only for direct client requests not for forwarding/including

${requestScope["javax.servlet.forward.request_uri"]}

or with single quotes

${requestScope['javax.servlet.forward.request_uri']}

Consider using servlet filters instead to validate information. This means you can avoid your validation forwarding and just stay in a single JSP file.

You can show it without using a bean reference with the following:

<h:outputText value="#{requestScope['javax.servlet.forward.request_uri']}" />

Of course, you need to map the 404 page in your web.xml file though.

<error-page>
    <error-code>404</error-code>
    <location>/xhtml/pg/error/404.xhtml</location>
</error-page>

Same as @Lenny Markus but using the provided constant in the Request Dispatcher class.

request.getAttribute(RequestDispatcher.FORWARD_REQUEST_URI)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!