Spring Start Here 5. Основы MVC. Flashcards
Контроллер
Компонент, который принимает запросы от пользователя, обрабатывает их и возвращает ответ.
Контроллеры определяют логику обработки запросов и связывают представления с моделями данных.
Обозначаются аннотацией @Controller (или @RestController для REST-приложений).
Реализуют обработку запросов, используя аннотацию @RequestMapping или другие аннотации для указания, какие URL-адреса они обрабатывают.
Основные функции контроллера
- Получение запросов:
Контроллер перехватывает HTTP-запросы (например, GET, POST) от клиента, такие как запросы браузера или других приложений. - Обработка данных:
Контроллер может выполнять простую логику обработки или делегировать её другим сервисам, репозиториям или компонентам. - Формирование модели:
Контроллер создаёт объект модели, который содержит данные для передачи в представление. - Возврат ответа: Контроллер возвращает представление с данными (в традиционных MVC-приложениях) или JSON/XML-ответ для REST-приложений.
Аннотации контроллера
@Controller — обозначает класс как контроллер для обработки веб-запросов.
@RequestMapping — указывает URL-адрес для обработки на уровне класса или метода.
@GetMapping, @PostMapping, @PutMapping, @DeleteMapping — специфичные аннотации для HTTP-методов, удобные для определения методов контроллера.
@RequestParam — привязывает параметры из URL к параметрам метода.
@PathVariable — привязывает переменные из части URL к параметрам метода.
@ModelAttribute — связывает объекты модели с параметрами запроса.
@ResponseBody — указывает, что возвращаемый объект должен быть записан прямо в HTTP-ответ (для REST-контроллеров).
и др.
Как работает контроллер
Когда клиент делает запрос к серверу, Spring ищет соответствующий контроллер, который будет обрабатывать данный запрос.
Как только подходящий контроллер найден, вызывается его метод, и данные передаются через модель в представление или возвращаются в виде JSON/XML.
Представление
Это компонент, отвечающий за отображение данных пользователю.
В архитектуре MVC (Model-View-Controller) представление (View) получает данные от контроллера и форматирует их для отображения в удобном для пользователя виде.
Представление фокусируется только на визуализации данных и не содержит бизнес-логики.
Основные задачи представления
- Отображение данных:
Представление отвечает за визуальное отображение данных, которые оно получает от контроллера. - Форматирование:
Преобразует данные в удобный формат — например, в HTML, JSON, XML, PDF и т.д. - Интерактивность:
Может включать элементы интерфейса (формы, кнопки, поля ввода) для взаимодействия с пользователем. - Обновление информации:
При изменении данных в модели представление может автоматически обновляться, чтобы показывать актуальную информацию.
Как Spring MVC работает с представлениями
- Контроллер возвращает имя представления:
Когда контроллер обрабатывает запрос, он возвращает название представления, которое должно быть отображено. - ViewResolver находит нужное представление:
Spring использует ViewResolver, чтобы найти и загрузить нужный шаблон представления. - Рендеринг данных: Данные, переданные контроллером, вставляются в шаблон, и представление генерируется.
- Отправка пользователю:
Сформированное представление (например, HTML) отправляется пользователю через веб-браузер.
Модель данных
Это основа, которая хранит, управляет и обеспечивает целостность данных приложения.
В архитектуре MVC (Model-View-Controller) модель (Model) — это компонент, который отвечает за хранение и управление данными, а также за бизнес-логику, связанную с этими данными.
В архитектуре MVC модель изолирует бизнес-логику и правила от логики интерфейса и представления, что делает код более гибким и простым для сопровождения.
В Spring модель данных часто представлена сущностями для базы данных, классами DTO для передачи данных и логикой, управляющей этими данными через контроллеры и сервисы.
Основные функции модели данных
- Хранение данных:
Модель представляет собой объект, который хранит данные приложения, такие как информация о пользователях, продуктах, заказах и т.д. - Управление логикой и правилами:
В модели реализуются правила бизнес-логики, которые описывают, как данные должны быть изменены, проверены и обработаны. Например, модель может содержать методы для расчета цен, валидации ввода или преобразования данных. - Взаимодействие с базой данных:
Модель часто связана с базой данных, где хранятся данные приложения. Она включает в себя методы для извлечения, обновления, удаления и сохранения данных в базе. - Обработка и подготовка данных для представления:
Модель передает данные контроллеру, который подготавливает их для отображения в представлении.
Взаимодействие модели с другими компонентами
- С контроллером:
Модель передает данные контроллеру, который использует их для обработки запроса и формирования ответа. - С сервисами:
В более сложных приложениях модель данных управляется через сервисный слой. Сервисы обрабатывают бизнес-логику, а модель лишь хранит данные. - С базой данных:
Через репозитории или DAO (Data Access Objects) модель может сохраняться, извлекаться, обновляться или удаляться из базы данных.