Обробка 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 і обробка помилок >

Напишіть перше повідомлення!

Ви повинні увійти під своїм аккаунтом щоб залишати коментарі