Java HttpServletRequest 在浏览器 URL 栏中获取 URL

标签 java jsp url servlets

所以我正在尝试使用 Java 的请求对象来获取页面的当前 URL。我一直在使用 request.getRequestURI() 来执行此操作,但我注意到当 java 类将我重新路由到 servlet 请求的不同页面时,getRequestURI 会给出该地址,而不是在浏览器中键入的原始 URL 和仍然显示在浏览器中。

例如:\高级搜索:
getRequestURI() 返回“\subdir\search\search.jsp”

我正在寻找一种方法来获取浏览器所看到的 URL,而不是该页面所知道的只是一个 servlet 包装器。

最佳答案

如果您当前的请求来自“应用服务器内部”转发或包含,则应用服务器应将请求信息保留为请求属性。具体属性及其包含的内容取决于您是在执行转发还是包含。

对于 <jsp:include> ,原始父 URL 将由 request.getRequestURL() 返回,并且包含的​​页面的信息将在以下请求属性中找到:

     javax.servlet.include.request_uri
     javax.servlet.include.context_path
     javax.servlet.include.servlet_path
     javax.servlet.include.path_info
     javax.servlet.include.query_string

对于 <jsp:forward> ,新的 URL 将由 request.getRequestURL() 返回,原始请求的信息将在以下请求属性中找到:

     javax.servlet.forward.request_uri
     javax.servlet.forward.context_path
     javax.servlet.forward.servlet_path
     javax.servlet.forward.path_info
     javax.servlet.forward.query_string

这些在 Servlet 2.4 规范的第 8.3 和 8.4 节中有规定。

但是,请注意,此信息仅为内部调度的请求保留。如果你有一个前端网络服务器,或者在当前容器之外调度,这些值将为空。也就是说,您可能无法找到原始请求的 URL。

关于Java HttpServletRequest 在浏览器 URL 栏中获取 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1256562/

相关文章:

Java 二叉树中通用节点数组,无法创建 nil 节点

java - 从 EditText Android 获取整数值

java - sessionFactory.openSession 中的 NullPointerException

java - 在Java中将XML作为字符串发布,何时刷新并关闭连接?

java - 不使用HTTP的Tomcat JSP/JSTL

java - 在托管服务器上测试时,请求调度程序页面未被重定向

java - 使用 Eclipse 和 Glassfish 的简单数据库 Web 应用程序

android - VideoView内的YouTube RTSP URL播放-低质量

java - Spring MVC 链接

json - SWIFT URLResponse 无输出//Google map PI