java - 如何获取客户端的url

标签 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

最佳答案

所以你想要通过完全有值(value)的 HTTP 请求调用当前页面的页面的 URL?我认为没有转发的方法,因为您通常不会为此使用 JSP(因为它可能会产生 IllegalStateException: Response already committed),而且,对于转发,您的要求只会以您想要的方式工作。

最简单的方法也是最好的选择是获取 HTTP Referer标题(是的,包括传说中的错字)。你可以在 EL 中获取它,如下所示:

${header.referer}

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

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

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

这样它可以在下一页访问

${param.from}

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

关于java - 如何获取客户端的url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2089528/

相关文章:

java - 如何使用系统属性设置Maven POM文件以在Java中输入参数?

java - 使用 Java 发送电子邮件

java - DBUtils - 使用 ResultSetHandler

java - jsp中的href标签并通过单击href标签传递数据

java - 从 int 值获取月份

java - 如何在 Hibernate 模板中执行更新(命名查询)?

java - 应用程序因计数和对话框而崩溃

java - 如何在 jSTL 中调用静态方法?

java - "return name;"和 "return this.name"有什么区别

jsf - 将唯一 ID 分配给 <div> inside <c :forEach>