Отображать разные страницы ошибок Tomcat в зависимости от URL исходного запроса - PullRequest
2 голосов
/ 19 июня 2009

Я хотел бы использовать директиву Tomcat для страницы ошибок, чтобы отображать различные страницы ошибок в ответ на различные типы исключений. Однако я хочу, чтобы отображаемая страница ошибки имела разные стили и содержание в зависимости от исходного URL-адреса запроса, который привел к ошибке.

В частности, у меня есть административная часть моего веб-приложения и пользовательская часть. Страницы ошибок должны быть разными, как с точки зрения стиля, так и меню. Самый надежный способ определить, в какой части находится данная страница, - поиск строк в URL. Я хотел бы указать страницу ошибок Tomcat, скажем, на сервлет, который будет анализировать URL и перенаправлять на страницу ошибок с соответствующим стилем.

Итак, 1) возможно ли использовать страницу ошибок или какой-либо другой механизм для перенаправления ошибок в сервлет, а не в JSP? (А если нет, могу ли я делать то, что я себе представляю, в JSP?)

и 2) как только я попаду в свой сервлет, могу ли я определить URL-адрес запроса, который привел к ошибке (request.requestURI не работает - он указывает на местоположение самой ошибки JSP).

Ответы [ 2 ]

4 голосов
/ 19 июня 2009

Вы можете получить оригинальный запрос UUR от

pageContext.errorData.requestURI

В вашей ошибке jsp, которую вы регистрируете через <error-page> в вашем web.xml

См. http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/jsp/ErrorData.html для получения дополнительной информации.

Что касается использования сервлета, вы, вероятно, можете использовать <jsp:forward> внутри ошибки jsp для пересылки сервлету по вашему выбору.

0 голосов
/ 19 июня 2009

Страница ошибок Tomcat является последним средством для отображения ошибок приложения (на тот случай, если ваша страница ошибок действительно не работает). Обычно вам следует (я бы порекомендовал) создать собственную страницу ошибок, где вы можете отображать ошибки в нетехническом виде. (по умолчанию) и технический вид (если пользователь хочет) таким образом, который подходит для ваших пользователей.

...