让我说我点击了
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?
答案 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。