web.xml 404 перенаправить на сервлет, как получить оригинальный URI? - PullRequest
11 голосов
/ 19 сентября 2011

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

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

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

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

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

Можно ли получить запрошенный URL "плохой" страницы?

1 Ответ

21 голосов
/ 19 сентября 2011

Да, он доступен в виде атрибута запроса с именем 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...