Spring mvc - основні поняття, архітектура

Розглянемо один з найголовніших розділів фреймворка Spring - Spring MVC.

Фреймворк Spring Web model-view-controller (MVC) або на нашу модель-уявлення-контролер побудований навколо DispatcherServlet. який розподіляє запити по обробникам. У ньому налаштовується меппінг запитів, локалі, тимчасові зони і багато іншого. Оброблювач за замовчуванням будується на анотаціях @Controller і @RequestMapping. які надають широкий набір гнучких методів для обробки запитів. Після версії Spring 3.0. механізм @Controller так само дозволяє створювати RESTful веб сайти і додатки, використовуючи анотацію @PathVariable і інші можливості.







В Spring Web MVC ви можете використовувати будь-який об'єкт в якості команди або об'єкта зі зворотним зв'язком; вам немає необхідності реалізовувати будь-якої спеціальний інтерфейс фреймворка або базовий клас. Зв'язування даних в Spring є дуже гнучким: наприклад, воно розглядає невідповідність типів як помилки валідації і тому це може бути оброблено в додатку, а не в якості системних помилок. Таким чином, вам не потрібно дублювати властивості бізнес-об'єктів, як простих нетипізований рядків для ваших об'єктів форм. Тому можна легко обробляти неправильні підтвердження (сабміта) або правильно конвертувати їх в рядки. Замість цього, бажано пов'язувати такі об'єкти безпосередньо з об'єктами бізнес логіки.

DispatcherServlet

Spring MVC побудований навколо центрального сервлету, який розподіляє запити по контролерам, а також надає інші широкі можливості при розробці веб додатків. Насправді DispatcherServlet - повністю інтегрований сервлет в Spring IoC контейнер і таким чином отримує доступ до всіх можливостей Spring.

Процедура розгляду заяв про в DispatcherServlet показана на малюнку нижче. Використовується патерн «pattern-savvy reader», який розпізнає DispatcherServlet як вираз з шаблону проектування «Front Controller».

Spring mvc - основні поняття, архітектура






DispatcherServlet - це звичайний сервлет (успадковується від базового класу HttpServlet), і його також необхідно описувати в web.xml вашого веб додатки. Вам необхідно вказати меппінг запитів, які будуть оброблятися в DispatcherServlet. шляхом вказівки URL в web.xml. Нижче показана стандартна конфігурація Java EE необхідна для настройки DispatcherServlet:

Де WebApplicationInitializer - інтерфейс, що надається Spring MVC, який гарантує ініціалізацію при старті контейнера.

Короткий опис роботи DispatcherServlet

Повернемося до картинки вище. На самому початку вхідний запит потрапляє в Front controller (для нас його не видно). Далі він перенаправляє його в Controller. Саме за цю частину і відповідає розробник. Після обробки запиту надсилається відповідь до Front controller, і після цього результат використовується для відображення уявлення. Ось таке легке опис шаблону проектування модель-уявлення-контролер :). Все це працює в контейнері сервлетів (на зображенні підпис - Tomcat)

Трохи більш докладно показано на наступній схемі:

Spring mvc - основні поняття, архітектура

Що тут показано?

  • Спочатку DispatcherServlet (диспетчер сервлетів) отримує запит, далі він дивиться свої настройки, щоб зрозуміти який контролер використовувати (на малюнку Handler Mapping).
  • Після отримання імені контролера запит передається в нього (на малюнку Controller). У контролері відбувається обробка запиту та назад надсилається ModelAndView (модель - самі дані; view (подання) - як ці дані відображати).
  • DispatcherServlet на підставі отриманого ModelAndView шукає яке уявлення йому використовувати (View Resolver) і отримує у відповіді ім'я уявлення View
  • У уявлення передаються дані (model) і назад, якщо необхідно, надсилається відповідь від уявлення.

Ще раз основи шаблону mvc:

  • Model - представлення даних, самі дані
  • View - представлення, вид, відображення
  • Controller - управління, зв'язок між моделлю і видом.
Життєвий цикл запиту

Наведу картинку з інтернету, яка показує життєвий цикл запиту. Можливо по ній комусь буде легше зрозуміти як відбувається обробка запитів від початку і до кінця. В принципі тут все те ж саме, але додані деякі пункти, назви яких говорять самі за себе.

Spring mvc - основні поняття, архітектура

Може бути цікаво







Схожі статті