|
Инструкция по созданию бизнесобъектов. Strategy это поведенческий паттерн, выносит набор алгоритмов в собственные классы и делает их взаимозаменимыми
18. Как выглядит структура MVC-приложения? Model-View-Controller (MVC, Модель-Представление-Контроллер) – это схема разделения данных приложения и управляющей логики на три отдельных компонента: модель, представление и контроллер — таким образом, что модификация каждого компонента может осуществляться независимо.
Основная цель применения этой концепции состоит в отделении бизнес-логики (модели) от ее визуализации (представления, вида). За счет такого разделения повышается возможность повторного использования кода. Наиболее полезно применение данной концепции в тех случаях, когда пользователь должен видеть те же самые данные одновременно в различных контекстах и/или с различных точек зрения.
В частности, выполняются следующие задачи:
1. К одной модели можно присоединить несколько представлений, при этом не затрагивая реализацию модели.
Например, некоторые данные могут быть одновременно представлены в виде электронной таблицы, гистограммы и круговой диаграммы;
2. Не затрагивая реализацию представлений, можно изменить реакции на действия пользователя (нажатие мышью на кнопке, ввод данных) — для этого достаточно использовать другой контроллер;
3. Ряд разработчиков специализируется только в одной из областей: либо разрабатывают графический интерфейс, либо разрабатывают бизнес-логику. Поэтому возможно добиться того, что программисты, занимающиеся разработкой бизнес-логики (модели), вообще не будут осведомлены о том, какое представление будет использоваться.
Модель - предоставляет данные и методы работы с ними: запросы в базу данных, проверка на корректность.
Модель не зависит от представления (не знает как данные визуализировать) и контроллера (не имеет точек взаимодействия с пользователем), просто предоставляя доступ к данным и управлению ими.
Модель строится таким образом, чтобы отвечать на запросы, изменяя свое состояние, при этом может быть встроено уведомление «наблюдателей» (поведенческий шаблон проектирования). Модель, за счет независимости от визуального представления, может иметь несколько различных представлений для одной «модели».
Представление - отвечает за получение необходимых данных из модели и отправляет их пользователю. Представление не обрабатывает введенные данные пользователя.
Контроллер - обеспечивает «связь» между пользователем и системой. Контролирует и направляет данные от пользователя к системе и наоборот. Использует модель и представление для реализации необходимого действия.
19. Чем контроллер отличается от сервлета? Контроллер — это часть паттерна MVC, получает запрос, возвращает модель и название View.Сервлет может быть контроллером, а может сам сделать всю обработку и вернуть view (вместо ViewResolver).
Servlet принимает запросы от пользователя и перенаправляет их на определенный контроллер.
Servlet представляет специальный тип классов Java, который выполняется на веб-сервере и который обрабатывает запросы и возвращает результат обработки.
Контроллер — это часть архитектурного шаблона MVC отвечающая за обработку входящих запросов.
В контексте Spring MVC в качестве сервлета выступает dispatcher servlet, реализующий паттерн FrontController, который принимает все входящие запросы и перенаправляет их на соответствующие контроллеры.
В приложении Spring MVC может существовать произвольное количество экземпляров DispatcherServlet, предназначенных для разных целей (например, для обработки запросов пользовательского интерфейса, запросов веб-служб REST и т.д.).
Каждый экземпляр DispatcherServlet имеет собственную конфигурацию WebApplicationContext, которая определяет характеристики уровня сервлета, такие как контроллеры, поддерживающие сервлет, отображение обработчиков, распознавание представлений, интернационализация, оформление темами, проверка достоверности, преобразование типов и форматирование и т.п.
20. Как вернуть страницу в контроллере? Как вернуть данные? 1. Вернуть страницу: в методе контроллера, в возвращаемом значении указать имя представления;
2. Вернуть данные: model.addAttribute("var_name", data);
3. Что вообще можно вернуть: тело запроса, @PathVariable, @RequestParam.
@RequestMapping - возвращает URI, для которого будут выполняться методы-обработчики.
@ResponseBody - Аннотацию указывает на то, что тип результата должен быть записан прямо в теле ответа в любом формате, например, JSON или XML.
@RequestBody @RequestParam – извлечение параметров по имени из запроса.
@PathVariable - задает динамический маппинг значений из URI внутри аргументов метода обработчика, т.е. позволяет вводить в URI переменную пути в качестве параметра.
И @RequestParam, и @PathVariable могут выполнять аналогичные функции, потому что, по сути, они оба являются пользовательским вводом, но часть ввода отличается: одна в части пути URL, а другая в части параметра.
ResponseEntity необходим, только если мы хотим кастомизировать ответ, добавив к нему статус ответа. Во всех остальных случаях будем использовать @ResponseBody.
Model — интерфейс, ModelMap его реализация.
ModelAndView является контейнером для пары, как ModelMap и View(@ModelAttribute – получить. Model.add - добавить).
|
|
|