如何获取客户端的URL

Dus*_*usk 3 java jsp jstl

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

Bal*_*usC 8

那么你想要一个通过一个完整的HTTP请求调用当前页面的页面的URL?我认为没有前进的方法,因为你通常不会使用JSP(因为它可能产生IllegalStateException: Response already committed),而且,对于前进,你的需求将按照你想要的方式工作.

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

${header.referer}
Run Code Online (Sandbox Code Playgroud)

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

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

<input type="hidden" name="from" value="${pageContext.request.requestURI}">
Run Code Online (Sandbox Code Playgroud)

这样它可以在下一页访问

${param.from}
Run Code Online (Sandbox Code Playgroud)

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


axt*_*avt 5

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

编辑:更正语法

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