我将请求从发送Display.jsp到TrialShow.jsp页面,但是每当我${pageContext.request.requestURL}在TrialShow JSP页面中调用时,我都会得到http://localhost:8081/newjsp1/TrialShow.jsp输出。如何http://localhost:8081/newjsp1/Display.jsp在TrialShow JSP页面中显示 ?
Display.jsp
${pageContext.request.requestURL}
http://localhost:8081/newjsp1/TrialShow.jsp
http://localhost:8081/newjsp1/Display.jsp
因此,您是否希望通过一个有价值的HTTP请求调用当前页面的页面的URL?我假设没有转发的方法,因为您通常不为此使用JSP(因为它可能会产生IllegalStateException: Response already committed),而且对于转发,您的需求将按照您想要的方式工作。
IllegalStateException: Response already committed
然后,最简单的方法和最好的选择就是获取HTTP Referer标头(是的,包括传说中的错字)。您可以按以下方式在EL中获得它:
Referer
${header.referer}
我说“最好的选择”,因为不需要客户填写引荐来源标头。大多数浏览器都会将它们发送出去,但是请记住,此值完全可以由客户端控制,因此客户端(或客户端安装的任何软件,以及某些特定的Norton软件,例如已知的示例)都可以欺骗甚至完全删除标头值。
一种更可靠的方法是让原始页面将其URL作为(隐藏的)请求参数传递。例如
<input type="hidden" name="from" value="${pageContext.request.requestURI}">
这种方式可以在下一页访问
${param.from}
我说的是“位”,因为客户端仍然可以更改它,但是现在您不再依赖于客户端特定的环境了。您仍然需要记住,不要将此值用于业务目的。最高将其用于统计或调试。