2010-01-18 92 views
3

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

回答

8

所以你想要一个完整的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} 

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

+0

谢谢主席先生非常多的你的帮助。 – Dusk 2010-01-18 22:21:45

+0

不客气。 – BalusC 2010-01-18 22:22:10

5

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

编辑:纠正语法

编辑:这工作,如果你转发请求到第二个JSP(例如,使用<jsp:forward .../>

+0

我不认为这里有任何前锋的手段。它是JSP - > JSP,而不是JSP - > Servlet - > JSP。如果实际上有一种转发方式,您可以在请求URL中看到“Display.jsp”的URL! – BalusC 2010-01-18 22:13:12