How would I get the URL of the page that was requested that caused the 404 error?
For example, I type I go to http:开发者_如何学C//example.com/path/does/not/exist/index.jsp I already have a custom 404 page but how would I go about retrieving the URL mentioned above so that I can display it with a message similar to "The url http://example.com/path/does/not/exist/index.jsp does not exist"?
If forward was used to go to the error page, you can obtain the original request URL by
request.getAttribute("javax.servlet.forward.request_uri")
or by EL
${requestScope['javax.servlet.forward.request_uri']}
I'm using JDK 8 and GlassFish 4, and
request.getAttribute("javax.servlet.forward.request_uri")
always returned null for me. What eventually did work was
request.getAttribute("javax.servlet.error.request_uri")
I'm not sure why the attribute name is different, but in case the name I listed doesn't work on your setup, here's the code I used to find it...
Enumeration<String> names = request.getAttributeNames();
while(names.hasMoreElements()){
String name = names.nextElement();
Object attr = request.getAttribute(name);
System.out.println("Req: "+name + " : "+attr);
}
精彩评论