Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

Просто объявите <error-page> в 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" %> в верхней части error.jsp, то у вас есть доступ к брошенному Exception (и, следовательно, также все его геттеров) на ${exception} в EL.

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

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

Ответ 2

В вашем 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>

Ответ 3

    If you use java config in spring, you can follow,

   @Configuration
   public class ExcpConfig {

    @Bean(name = "simpleMappingExceptionResolver")
    public SimpleMappingExceptionResolver simpleMappingExceptionResolver() {
        SimpleMappingExceptionResolver resolver= new SimpleMappingExceptionResolver();

        Properties mappings = new Properties();
        resolver.setExceptionMappings(mappings); // None by default
        resolver.setExceptionAttribute("ErrorOccurred"); // Default is "exception"
        resolver.setDefaultErrorView("500"); // 500.jsp
        return r;
    }

}