Добавил:
rushevamar@mail.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РИС шпоры для печати.docx
Скачиваний:
29
Добавлен:
31.05.2022
Размер:
1.01 Mб
Скачать

42. Spring mvc. DispatcherServlet роль и функции Spring mvc , работа с контекстом и интерфейсом HandlerMapping, особенности функционирования DispatcherServlet. Саша

Фреймворк Spring MVC обеспечивает архитектуру паттерна Model — View — Controller (Модель — Отображение (далее — Вид) — Контроллер) при помощи слабо связанных готовых компонентов. Паттерн MVC разделяет аспекты приложения (логику ввода, бизнес-логику и логику UI), обеспечивая при этом свободную связь между ними.

  • Model (Модель) инкапсулирует (объединяет) данные приложения, в целом они будут состоять из POJO («Старых добрых Java-объектов», или бинов).

  • View (Отображение, Вид) отвечает за отображение данных Модели, — как правило, генерируя HTML, которые мы видим в своём браузере.

  • Controller (Контроллер) обрабатывает запрос пользователя, создаёт соответствующую Модель и передаёт её для отображения в Вид.

DispatcherServlet - это реализация шаблона проектирования фронт-контроллера. Он обеспечивает централизованную точку доступа для Spring Web MVC и отвечает за распределение обязанностей. Он также легко интегрируется с контейнером Spring IoC, так что можно получить все преимущества Spring.

DispatcherServlet в основном используется для планирования ответственности, а сам в основном используется для управления процессом. Основные обязанности следующие:

1. Анализ загрузки файла, если тип запроса - составной, анализ загрузки файла будет выполняться через MultipartResolver;

2. Сопоставьте запрос с процессором через HandlerMapping (верните HandlerExecutionChain, который включает процессор и несколько перехватчиков HandlerInterceptor);

3. Поддержка нескольких типов процессоров (процессоры в HandlerExecutionChain) через HandlerAdapter;

4. Разрешить логическое имя представления для конкретной реализации представления через ViewResolver;

5. Анализ локализации;

6. Рендеринг определенных видов и т.д .;

7. Если во время выполнения обнаружено исключение, оно будет передано в HandlerExceptionResolver для анализа.

Диспетчер сервлетов DisptacherSevlet Spring’а с помощью Handler Mapping определяет какой контроллер он должен использовать для определенного запроса request. Возьмем картинку из статьи Spring MVC – основные понятия, архитектура.

По определению HandlerMapping — интерфейс, который реализуется объектами, которые определяют отображение между запросами и объектами обработчиков.

Реализации HandlerMapping могут поддерживать перехватчики (interceptors), но не содержат их. Обработчик будет всегда обернут в экземпляре HandlerExecutionChain, возможно в сопровождении некоторых экземпляров HandlerInterceptor. DispatcherServlet сначала вызывает метод preHandle каждого HandlerInterceptor в заданном порядке, и в конце, внедряет обработчик, если все методы preHandle вернули true.

По умолчанию интерфейс HandlerMapping в Spring MVC реализуется классом RequestMappingHandlerMapping. Существуют другие реализации интерфейса, которые используют другие параметры для поиска контроллера, соответствующего запросу.

В Spring MVC вы можете встретить реализацию интерфейса, когда применяете аннотацию @RequestMapping. Например отрывок из Spring MVC – Hello World:

1

2

3

4

5

6

7

@RequestMapping(value = "/", method = RequestMethod.GET)

public ModelAndView main() {

ModelAndView modelAndView = new ModelAndView();

modelAndView.addObject("userJSP", new User());

modelAndView.setViewName("index");

return modelAndView;

}