如何获取客户端的URL

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

那么你想要一个通过一个完整的HTTP请求调用当前页面的页面的URL? 我假设没有前向的方法,因为你通常不会使用JSP(因为它可能会产生IllegalStateException: Response already committed ),并且,如果你有一个转发,你的需求将按照你想要的方式工作。

最简单的方法和最好的选择是获取HTTP Referer标题(是的,包括传说中的拼写错误)。 您可以按如下方式在EL中获取它:

 ${header.referer} 

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

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

  

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

 ${param.from} 

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

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

编辑:更正语法

编辑:如果您将请求转发到第二个jsp(例如,使用 ),这是有效的