Ответ
Spring MVC — это модуль фреймворка Spring для построения веб-приложений, реализующий архитектурный паттерн Model-View-Controller (MVC).
Основные компоненты:
- Model: Содержит данные приложения (обычно в виде
Map,Model,ModelAndViewили POJO/DTO). - View: Отвечает за рендеринг пользовательского интерфейса (JSP, Thymeleaf, FreeMarker).
- Controller: Обрабатывает HTTP-запросы, взаимодействует с сервисным слоем и подготавливает Model и View.
Как это работает (упрощенно):
DispatcherServlet(Front Controller) получает запрос.- Он делегирует запрос соответствующему
@Controllerна основе маппинга URL. - Контроллер вызывает бизнес-логику, помещает данные в Model.
DispatcherServletразрешает View и передает ему Model для рендеринга ответа.
Пример контроллера:
@Controller
@RequestMapping("/users")
public class UserController {
@GetMapping("/{id}")
public String getUser(@PathVariable Long id, Model model) {
User user = userService.findById(id);
model.addAttribute("user", user); // Добавляем в Model
return "user-details"; // Имя представления (user-details.html)
}
@PostMapping
public String createUser(@ModelAttribute User user) {
userService.save(user);
return "redirect:/users"; // Перенаправление
}
}
Ключевые аннотации: @Controller, @RequestMapping, @GetMapping/@PostMapping, @PathVariable, @ModelAttribute, @ResponseBody.