Возвращение ошибки и сообщения от контроллера или службы Spring

Я переношу некоторые сервлеты на платформу Spring, используя Spring MVC. В настоящее время в каждом сервлете мы аутентифицируем пользователя, и если аутентификация не удалась, мы делаем следующее:

if (authfailed)
{
  response.sendError(HttpServletResponse.SC_UNAUTHORIZED,
                     "You are not authorized.");
  return;
}

На интерфейсе находится приложение на основе YUI, и когда возвращается статус ошибки, обратный вызов «сбой» отображает диалоговое окно с сообщением об ошибке приведено выше.

Я знаю, что в своем контроллере я могу получить объект ответа и вызвать sendError , но это лучший способ справиться с этим? sendError также генерирует исключение IOException, поэтому мне пришлось бы это уловить - немного раздражающего кода для вставки в каждый метод каждого контроллера.

У меня такая же проблема с обработкой исключений - сервлеты пытаются- блоки catch, которые вызывают sendError в методе catch. Я знаю, что могу пометить свои обработчики исключений с помощью

@ExceptionHandler
@ResponseStatus(value = HttpStatus.NOT_FOUND)

, но разве класс обработки исключений не должен быть в каждом классе контроллера?

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

Это кажется более сложным, чем должно быть, но, как и многие другие вещи в Spring, вероятно, я не понять, что происходит. Все, что я хочу сделать, это отправить статус ошибки и сообщение обратно в ответ!

Спасибо,

Пол

9
задан Paul 22 April 2011 в 17:02
поделиться