如何从JSP中的地址栏获取URL

时间:2014-05-22 10:28:32

标签: java jsp servlets

让我说我点击了

  

http://localhost/webapp/wcs/stores/servlet/en/marksandspencer/l/women/dresses/party-and-cocktail-dresses

并在内部将我重定向到自定义404.jsp页面,但URL在地址栏中保持不变。

我尝试了这段代码 - <%= request.getAttribute("javax.servlet.forward.request_uri") %>;,它让我回到了404.jsp的路径

如何获取地址栏中输入的URL?

5 个答案:

答案 0 :(得分:4)

使用 request.getAttribute(&#34; javax.servlet.error.request_uri&#34;)获取未找到的请求页面的URI(404错误)。检查一下:https://tomcat.apache.org/tomcat-7.0-doc/servletapi/constant-values.html

当引发错误时(由于某些原因,例如找不到页面(404),内部服务器错误(500),...),servlet引擎会将请求转发到相应的错误页面(在web.xml中配置)使用 ERROR调度程序类型 NOT FORWARD调度程序类型,这就是我们必须使用javax.servlet.error.request_uri的原因,不要使用javax.servlet.forward。 REQUEST_URI

答案 1 :(得分:3)

我觉得你很亲密。 javax.servlet.forward.request_uri用于正常转发,但对于404,您需要javax.servlet.error.request_uri

答案 2 :(得分:1)

您可以使用:

String url = request.getRequestURL().toString();

但这并不包含查询字符串。因此,要获取查询字符串,您可以调用

request.getQueryString()

答案 3 :(得分:0)

您可以执行此操作以获取包含参数的整个URL。

    request.getRequestURL()+""+request.getQueryString();

答案 4 :(得分:-2)

使用request.getHeader("Referer")

referer会从您重定向的位置提供一个URL。