gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 20:25:24 34 4
gpt4 key购买 nike

所以我正在尝试使用 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/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com