Как показать удобную для пользователя ошибочную страницу в браузере, когда исключение на этапе выполнения выдается сервлетом?

Я разрабатываю веб-приложение с JSF. Я протестировал его, когда я смог, но время от времени исключения на этапе выполнения выдаются.

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

39
задан BalusC 31 March 2016 в 14:13
поделиться

2 ответа

Просто объявите в web.xml , где вы можете указать страницу, которая должна отображаться на определенном Throwable (или любой из его подклассов) или код состояния HTTP . Например.

<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/error.jsp</location>
</error-page>

, который будет отображать страницу ошибки в любом подклассе java.lang.Exception , но не java.lang.Throwable или java.lang.Error . Таким образом, у вас может быть собственная страница ошибок для любого типа Throwable . Например. java.sql.SQLException , java.io.IOException и так далее.

Или

<error-page>
    <error-code>500</error-code>
    <location>/error.jsp</location>
</error-page>

, который отображает страницу ошибки при ошибке HTTP 500, но вы также можете указать другие для 404 (Страница не найдена), 403 (Запрещено) и т. Д.

Если вы объявите <% @ page isErrorPage = "true"%> в верхней части ошибки .jsp , то у вас есть доступ к сгенерированному исключению (и, следовательно, также ко всем его геттерам) $ {exception} в EL.

<p>Message: ${exception.message}</p>

Также см. Учебник Java EE 5 по этой теме .

59
ответ дан 27 November 2019 в 02:36
поделиться

В вашем web.xml:

<error-page>
  <error-code>500</error-code>
  <location>/errorpages/500.jsp</location>
</error-page>

Вы также можете перехватить определенные исключения или исключения, которые расширяют Throwable :

<error-page>
  <exception-type>java.lang.Throwable</exception-type>
  <location>/errorpages/500.jsp</location>
</error-page>
10
ответ дан 27 November 2019 в 02:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: