I’m redirecting 404 errors to a servlet via the following in my web.xml.
<error-page>
<error-code>404</error-code>
<location>/notFound.do</location>
</error-page>
I’d like to log where the request was trying to go, but I’m not getting it from the referrer header: request.getHeader(“referer”)
That shows ‘null’ if I just hit any old random non-existent page.
And request.getRequestURL()/request.getRequestURI() both merely shows the final landing servlet info (I.e., /notFound).
Any way to get the ‘bad’ page URL that was requested?
Yes, it’s available as a request attribute with the name
javax.servlet.forward.request_uri, which is keyed byRequestDispatcher#FORWARD_REQUEST_URI. The error page location is namely invoked by a simpleRequestDispatcher#forward()call.So, you can get it as follows in servlet:
or in EL: