Что делает DispatcherServlet в Spring MVC?
- Как Spring MVC обрабатывает запрос?
DispatcherServlet — единая точка входа (front controller): принимает запрос, через HandlerMapping находит метод контроллера, вызывает его через HandlerAdapter, превращает результат в ответ (HttpMessageConverter или представление), обрабатывает исключения.
- Interceptor'ы вызываются вокруг обработчика
- Аргументы метода разбирают argument resolvers (@PathVariable, @RequestBody)
- Исключения — HandlerExceptionResolver и @ControllerAdvice
А ещё В Spring Boot регистрируется автоматически на "/"
Подробно
Централизация нужна для того, чтобы общие задачи решались в одном месте: подбор метода контроллера по пути и методу HTTP, преобразование параметров и тела запроса, вызов валидации, обработка исключений, формирование ответа. Через отдельные точки входа это пришлось бы дублировать. До диспетчера запрос успевает пройти цепочку фильтров сервлетного уровня, а после него — перехватчики Spring MVC.
Что хотят услышать
- Роль front controller.
- Основные компоненты пути запроса.
Частые ошибки
- Путать фильтры сервлетов и перехватчики Spring MVC по месту в цепочке.
- Считать, что диспетчер занимается созданием бинов.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Устанавливает соединение с базой данных для каждого запроса и закрывает его после ответа
- ✗Управляет жизненным циклом бинов приложения
- ✓Принимает все запросы, направляет их обработчику и превращает результат в ответ
- ✗Обрабатывает только статические файлы
Что спросят дальше
- Чем фильтр отличается от перехватчика?
- Что происходит с запросом после выбора обработчика?
Разбор темы
- Сервлеты, фильтры и встроенный контейнер
Сервлет и встроенный Tomcat, модель thread-per-request, потокобезопасность контроллеров, Filter против Interceptor и forward/redirect.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.