Обработка HTTP-ошибок 404, 500, 503 в Spring MVC

мая
07
2012
Метки: error http java mvc spring

Содержание

Обязательным условием любого уважающего себя сайта является корректная обработка HTTP-ошибок, а не отображения вместо них стандартной страницы с информацией об ошибке и ее описанием в стандартном для языка Java вида. В этой серии статей описывается несколько способов обработки как HTTP-ошибок, так и исключений. В конце статьи будет приведен исходник приложения, демонстрирующего/ обработку ошибок и исключений.

Также иногда появляются ситуации, когда веб-сервер обязан возвращать только код ошибки без какой-либо дополнительной информации. В этой ситуации также необходимо отлавливать HTTP-ошибки.

Если Вы знакомы с спецификацией сервлетов, то уже знаете, что контейнеры сервлетов могут обрабатывать исключения и HTTP-ошибки, используя простую конфигурацию в файле web.xml. Эта конфигурация может выглядеть следующим образом:


<!-- HTTP-error -->
<error-page>
<error-code>404</error-code>
<location>page-not-found.jsp</location>
</error-page>

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

Разберемся для начала, в чём разница между HTTP-ошибкой и исключениями.

HTTP-ошибки - это ошибки, которые описаны спецификацией RFC2616 и не являются исключением как таковым. Spring не отлавливает подобные ошибки, но есть возможность генерировать любую из них, используя код, подобный приведенному ниже:


HttpServletResponse response
// ... some code
response.sendError( httpErrorCode );

Ниже список возможных HTTP-ошибок (наиболее известные из них: 404, 500, 501, 503.):

Исключения (Exception) - второй тип ошибок, который можно указать в файле web.xml. В отличии от HTTP-ошибок, контейнер сервлетов возвращает страницу в случае если получено указанное исключение (в примере - java.lang.Exception), а не ошибка HTTP протокола.

Несколько причин, почему стоит использовать Spring при обработке ошибок:

В следующих трёх статьях будет описано три способа обработки ошибок:

@ExceptionHandler в Spring и обработка ошибок >

Напишите первое сообщение!

Вы должны войти под своим аккаунтом чтобы оставлять комментарии