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



比如点击

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") .

最新更新