如何获取客户端的URL

时间:2010-01-18 21:57:29

标签: java jsp jstl

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

2 个答案:

答案 0 :(得分:8)

那么您想要通过一个完整的HTTP请求调用当前页面的页面的URL吗?我认为没有前进的方法,因为你通常不会使用JSP(因为它可能会产生IllegalStateException: Response already committed),而且,如果你有一个转发,你的需求就会按照你想要的方式运行。 / p>

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

${header.referer}

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

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

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

通过这种方式,可以通过

访问下一页
${param.from}

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

答案 1 :(得分:5)

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

编辑:更正语法

编辑:如果您将请求转发给第二个jsp(例如,使用<jsp:forward .../>

,则此方法有效