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