我正在将请求从 Display.jsp
发送到 TrialShow.jsp 页面,但是每当我在 TrialShow JSP 页面中调用 ${pageContext.request.requestURL}
时,我得到 http://localhost:8081/newjsp1/TrialShow.jsp
作为输出。如何在 TrialShow JSP 页面中显示 http://localhost:8081/newjsp1/Display.jsp
?
最佳答案
所以你想要通过完全有值(value)的 HTTP 请求调用当前页面的页面的 URL?我认为没有转发的方法,因为您通常不会为此使用 JSP(因为它可能会产生 IllegalStateException: Response already committed
),而且,对于转发,您的要求只会以您想要的方式工作。
最简单的方法也是最好的选择是获取 HTTP Referer
标题(是的,包括传说中的错字)。你可以在 EL 中获取它,如下所示:
${header.referer}
我说的是“最好的选择”,因为客户不需要填写引荐 header 。大多数浏览器都会发送它们,但请记住,此值完全可由客户端控制,因此客户端(或任何客户端安装的软件,以某些特定的诺顿软件为例)可以欺骗甚至完全删除 header 值。
一种更可靠的方法是让原始页面将其 URL 作为(隐藏的)请求参数传递。例如
<input type="hidden" name="from" value="${pageContext.request.requestURI}">
这样它可以在下一页访问
${param.from}
我说“位”,因为客户端仍然可以更改它,但现在您不再依赖于客户端特定环境。您仍然需要记住,您不应将此值用于商业目的。最多使用它进行统计或调试。
关于java - 如何获取客户端的url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2089528/