Ответ
DispatcherServlet — это центральный сервлет-диспетчер (Front Controller) в Spring MVC, который координирует обработку каждого HTTP-запроса. Он является единой точкой входа для приложения.
Роль и рабочий поток:
- Получает запрос от контейнера сервлетов.
- Делегирует запрос цепочке компонентов для обработки:
- HandlerMapping: Определяет, какой контроллер (
@Controller) должен обработать запрос. - HandlerAdapter: Вызывает метод контроллера с привязкой параметров.
- Controller: Выполняет бизнес-логику и возвращает имя представления или объект данных.
- ViewResolver: Сопоставляет имя представления с конкретным View (JSP, Thymeleaf).
- View: Визуализирует ответ (HTML, JSON и т.д.).
- HandlerMapping: Определяет, какой контроллер (
- Возвращает ответ клиенту.
Конфигурация (на примере Java Config):
public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { RootConfig.class }; // Сервисы, репозитории
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] { WebConfig.class }; // Контроллеры, ViewResolver
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" }; // Обрабатывает все запросы
}
}
Почему это важно: DispatcherServlet инкапсулирует общую логику маршрутизации, обработки исключений, интернационализации, что позволяет разработчику фокусироваться на бизнес-коде в контроллерах.