一尘不染

如何获取客户端的URL

jsp

我将请求从发送Display.jsp到TrialShow.jsp页面,但是每当我${pageContext.request.requestURL}在TrialShow
JSP页面中调用时,我都会得到http://localhost:8081/newjsp1/TrialShow.jsp输出。如何http://localhost:8081/newjsp1/Display.jsp在TrialShow
JSP页面中显示 ?


阅读 568

收藏
2020-06-08

共1个答案

一尘不染

因此,您是否希望通过一个有价值的HTTP请求调用当前页面的页面的URL?我假设没有转发的方法,因为您通常不为此使用JSP(因为它可能会产生IllegalStateException: Response already committed),而且对于转发,您的需求将按照您想要的方式工作。

然后,最简单的方法和最好的选择就是获取HTTP
Referer标头(是的,包括传说中的错字)。您可以按以下方式在EL中获得它:

${header.referer}

我说“最好的选择”,因为不需要客户填写引荐来源标头。大多数浏览器都会将它们发送出去,但是请记住,此值完全可以由客户端控制,因此客户端(或客户端安装的任何软件,以及某些特定的Norton软件,例如已知的示例)都可以欺骗甚至完全删除标头值。

一种更可靠的方法是让原始页面将其URL作为(隐藏的)请求参数传递。例如

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

这种方式可以在下一页访问

${param.from}

我说的是“位”,因为客户端仍然可以更改它,但是现在您不再依赖于客户端特定的环境了。您仍然需要记住,不要将此值用于业务目的。最高将其用于统计或调试。

2020-06-08