获取导致404的请求页面的URL

时间:2011-02-09 17:26:42

标签: jsp

如何获取导致404错误的请求页面的网址?

例如,我输入http://example.com/path/does/not/exist/index.jsp 我已经有了一个自定义的404页面,但是如何检索上面提到的URL以便我可以显示类似于“网址http://example.com/path/does/not/exist/index.jsp不存在”的消息?

2 个答案:

答案 0 :(得分:9)

如果使用转发转到错误页面,您可以通过

获取原始请求网址
request.getAttribute("javax.servlet.forward.request_uri")

或EL

${requestScope['javax.servlet.forward.request_uri']}

答案 1 :(得分:0)

我正在使用JDK 8和GlassFish 4,以及

request.getAttribute("javax.servlet.forward.request_uri")

总是为我返回null。最终起作用的是

request.getAttribute("javax.servlet.error.request_uri")

我不确定为什么属性名称不同,但如果我列出的名称对您的设置不起作用,这里是我用来找到它的代码......

    Enumeration<String> names = request.getAttributeNames();

    while(names.hasMoreElements()){
        String name = names.nextElement();
        Object attr = request.getAttribute(name);

        System.out.println("Req:  "+name + " : "+attr);
    }