Короткий ответ
DispatcherServlet — фронт-контроллер Spring MVC: он принимает все входящие HTTP-запросы, направляет их к нужным контроллерам, координирует обработку и возвращает ответ клиенту. Архитектурно Spring MVC делит приложение на Model, View и Controller, а DispatcherServlet служит единой точкой входа для всех запросов.
Как это работает подробнее
Полная цепочка типового запроса в Spring Boot-приложении: клиент → DispatcherServlet → Controller → Service → Repository → база данных, а результат возвращается через контроллер клиенту в виде представления или JSON. В Spring Boot DispatcherServlet настраивается автоматически при подключении spring-boot-starter-web: встроенный Tomcat и авто-конфигурация Spring MVC уже включены.
- Приём запроса: клиент отправляет HTTP-запрос, и он попадает в DispatcherServlet.
- Маршрутизация: по маппингам запросов (
@RequestMapping,@GetMapping) DispatcherServlet определяет, какой контроллер обработает запрос. - Обработка: контроллер взаимодействует с моделью и сервисным слоем и возвращает модель с именем представления либо сразу данные.
- Рендеринг ответа: DispatcherServlet выбирает представление (JSP, Thymeleaf) или подготавливает ответ; представление рендерит данные в итоговый ответ клиенту.
Пример кода
GreetingController.java
@Controller
public class GreetingController {
@GetMapping("/greeting")
public String greeting(Model model) {
model.addAttribute("message", "Hello");
return "greeting";
}
}Что использовать на практике
- Для страниц MVC-приложения используйте
@Controller, возвращая имя представления, а для REST —@RestController.