Как показать удобную страницу ошибок в браузере, когда исключение среды выполнения выбрано сервлетом?
Я разрабатываю веб-приложение с JSF. Я тестировал его, как только мог, но время от времени исключаются исключения времени выполнения.
Итак, как перенаправить пользователя на страницу специальных ошибок каждый раз, когда генерируется исключение (вместо отображения 500 ошибок с полными журналами tomcat)?
Ответы
Ответ 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;
}
}