Ответ
В паттерне Model-View-Controller (MVC) контроллер выступает в роли посредника между пользователем (View), данными и бизнес-логикой (Model). Его основная ответственность — обработка входящих запросов.
Функции контроллера:
- Прием входных данных: Получает пользовательский ввод (HTTP-запрос, клик, команду) от слоя представления (View).
- Взаимодействие с Model: Вызывает соответствующие методы бизнес-логики в Model для обработки запроса (получение, сохранение, изменение данных).
- Выбор View: На основе результата работы Model определяет, какое представление (View) должно отобразить ответ пользователю, и передает ему необходимые данные.
Ключевой принцип: Контроллер не должен содержать бизнес-логику (это задача Model) или логику отображения (это задача View). Он только управляет потоком выполнения.
Пример на Spring MVC:
@Controller // Аннотация Spring, обозначающая класс как контроллер
@RequestMapping("/products")
public class ProductController {
@Autowired
private ProductService productService; // Ссылка на слой Model (Сервис)
@GetMapping("/{id}")
public String getProduct(@PathVariable Long id, Model model) {
// 1. Взаимодействие с Model: получение данных
Product product = productService.findById(id);
// 2. Подготовка данных для View
model.addAttribute("product", product);
// 3. Выбор View: возвращает имя шаблона Thymeleaf/HTML
return "product-details";
}
}
Итог: Контроллер обрабатывает запрос GET /products/123, получает продукт из Model, передает его в View product-details.html и завершает свою работу.