Web.xml 404 перенаправить на сервлет, как получить исходный URI?

Я перенаправляю 404 ошибки в сервлет через следующее в моем web.xml.

<error-page>
    <error-code>404</error-code>
    <location>/notFound.do</location>
</error-page>

Я хотел бы зарегистрировать, куда был отправлен запрос, но я не получаю его из заголовка referrer: request.getHeader( "referer" )

Это показывает "null", если я просто ударил любую старую случайную несуществующую страницу.

И request.getRequestURL()/request.getRequestURI() оба просто показывает конечную информацию сервлета посадки (I.e.,/notFound).

Любой способ получить "плохой" URL страницы, который был запрошен?

Ответ 1

Да, он доступен как атрибут запроса с именем javax.servlet.forward.request_uri, который управляется RequestDispatcher#FORWARD_REQUEST_URI. Расположение страницы ошибки вызвано простым вызовом RequestDispatcher#forward().

Итак, вы можете получить его в сервлет:

String originalUri = request.getAttribute(RequestDispatcher.FORWARD_REQUEST_URI);

или в EL:

<p>Original URI: ${requestScope['javax.servlet.forward.request_uri']}</p>