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

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

例如:\ AdvancedSearch:

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节中列出。

但是,请注意,此信息仅保留给内部调度的请求。如果您有前端Web服务器,或者在当前容器之外调度,则这些值将为null。换句话说,您可能无法找到原始请求URL。

以上是 Java HttpServletRequest获取浏览器URL栏中的URL 的全部内容, 来源链接: utcz.com/qa/434466.html

回到顶部