比如点击
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 ?
我想你很接近了。javax.servlet.forward.request_uri
为正常转发,404需要javax.servlet.error.request_uri
。
使用request.getAttribute("javax.servlet.error.request_uri")获取未找到的请求页面的URI(404错误)。检查这个:https://tomcat.apache.org/tomcat-7.0-doc/servletapi/constant-values.html
当错误引发时(由于某些原因,如页面未找到(404),内部服务器错误(500),…),servlet引擎将使用 error分派器类型, not FORWARD分派器类型将请求转发到相应的错误页面(在web.xml中配置),因此我们必须使用使用javax.servlet.error。
您可以使用:
String url = request.getRequestURL().toString();
,但它不包含查询字符串。要获取查询字符串,你可以调用
request.getQueryString()
您可以这样做以获得包括参数在内的整个URL。
request.getRequestURL()+""+request.getQueryString();
使用request.getHeader("Referer")
.