Я переношу некоторые сервлеты на платформу 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, вероятно, я не понять, что происходит. Все, что я хочу сделать, это отправить статус ошибки и сообщение обратно в ответ!
Спасибо,
Пол