【问题标题】:how to get URL from address bar in JSP如何从 JSP 中的地址栏获取 URL
【发布时间】:2014-07-11 08:06:51
【问题描述】:

假设我击中了

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 的路径

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

【问题讨论】:

标签: java jsp servlets


【解决方案1】:

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

当出现错误时(由于某些原因,例如找不到页面(404),内部服务器错误(500),...),servlet引擎会将请求转发到相应的错误页面(在web.xml中配置)使用ERROR dispatcher typeNOT FORWARD dispatcher type,所以我们必须使用javax.servlet.error.request_uri,而不是使用javax.servlet.forward。 request_uri

【讨论】:

  • 谢谢哥们..你们摇滚:)
【解决方案2】:

我认为你很接近。 javax.servlet.forward.request_uri是普通转发,但是404需要javax.servlet.error.request_uri

【讨论】:

    【解决方案3】:

    你可以使用:

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

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

    request.getQueryString()
    

    【讨论】:

    • 如您所见,我的 URL 是 SEO URL,request.getRequestURL() 将返回映射到该 seo 的 JSP,但我想要的是我的 JSP 中的 SEO url。
    • 对不起,我不知道什么是SEO URL..:p
    【解决方案4】:

    您可以这样做来获取包括参数在内的整个 URL。

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

    【讨论】:

      【解决方案5】:

      使用request.getHeader("Referer")

      referer 提供了您重定向的网址。

      【讨论】:

      • 它给了我 null :(
      • 是的!当应用程序找不到输入的 URL 时,页面被重定向到 404.jsp。
      猜你喜欢
      • 1970-01-01
      • 2020-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多