1.1 Основные возможности Spring MVC
1.1.1 Основные понятия
- Spring MVC - это облегченная структура Web MVC системы Spring.
- Основной контроллер Spring MVC используется для обработки запросов и генерации ответов.
- Spring MVC работает на основе контейнера Spring IOC, и все объекты управляются IOC.
Взаимодействие с другими людьми
1.1.2 Положение в трехуровневой архитектуре
1.1.3 Преимущества Springmvc
Серийный номер | преимущество | описание |
---|---|---|
1 | Четкое разделение ролей | Фронтальный контроллер (DispatcherServlet), преобразователь процессора (HandlerMapping), адаптер процессора (HandlerAdapter), преобразователь представлений (ViewResolver), внутренний контроллер (Controller) |
2 | Полная интеграция с Spring framework | Это недоступно в других веб-фреймворках. |
3 | Хорошая масштабируемость | Легко расширяется, хотя и не требуется |
4 | Удобное модульное тестирование | Объект Mock, предоставляемый Spring, можно использовать для очень простого выполнения модульного тестирования веб-уровня. |
5. | Мощный | RESTful, проверка данных, форматирование, локализация, темы и т. Д. |
6 | библиотека тегов jsp | Мощная библиотека тегов JSP, упрощающая написание JSP |
1.1.4 Сравнение со Struts2
Общие моменты :
- Все они представляют собой структуры уровня представления и написаны на основе модели MVC.
- Их нижний слой неотделим от исходного ServletAPI.
- Их механизм обработки запросов - это базовый контроллер.
Разница :
- Вход Spring MVC - это Servlet, а Struts2 - это фильтр.
- Spring MVC основан на дизайне методов, а Struts2 основан на классе, Struts2 будет создавать класс действия каждый раз, когда он выполняется. Таким образом, Spring MVC будет немного быстрее, чем Struts2.
- Spring MVC более лаконичен в использовании, а также поддерживает JSR303, что упрощает обработку запросов ajax.
- Выражение OGNL в Struts2 повышает эффективность разработки страницы, чем Spring MVC, но эффективность выполнения не лучше, чем у JSTL, особенно тега формы struts2, который не так эффективен, как html.
1.2 Принцип исполнения
1.2.1 Передний контроллер
Веб-фреймворк Spring разработан на основе DispatcherServlet. Роль DispatcherServlet - распределять запросы по разным процессорам.。
Начиная с Spring 2.5, пользователи, использующие Java 5 или выше, могут использовать метод объявления контроллера на основе аннотаций.
Фреймворк Spring MVC, как и многие другие фреймворки MVC, управляется запросами, отправляет запросы и предоставляет другие функции для центрального сервлета. DispatcherServlet - это фактический сервлет (он наследуется от базового класса HttpServlet) .
1.2.2 Принципы SpringMVC
Когда запрос инициируется, фронт-контроллер перехватывает запрос, генерирует прокси-запрос в соответствии с параметрами запроса, находит фактический контроллер, соответствующий запросу, контроллер обрабатывает запрос, создает модель данных, обращается к базе данных и отвечает на модель центральному контроллеру для управления Процессор использует модель и представление для визуализации результата представления, возвращает результат центральному контроллеру, а затем возвращает результат запрашивающей стороне.
1.2.3 Принцип выполнения SpringMVC
Сплошная линия указывает на технологию, предоставляемую фреймворком SpringMVC, и не требует реализации разработчиком, а пунктирная линия указывает, что она должна быть реализована разработчиком.
Взаимодействие с другими людьми
1.2.4 Процесс выполнения
1. DispatcherServlet представляет собой фронт-контроллер и является центром управления всем SpringMVC. Пользователь отправляет запрос, а DispatcherServlet получает запрос и перехватывает его.
Предположим, запрошенный URL-адрес: http: // localhost: 8080 / SpringMVC / success
如上url拆分成三部分:http://localhost:8080服务器域名。
SpringMVC部署在服务器上的web站点。success表示控制器.
通过分析,如上url表示为:请求位于服务器localhost:8080上的SpringMVC站点的hello控制器。
2. HandlerMapping - отображение процессора.
DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url查找Handler。
3. HandlerExecutionChain представляет собой конкретный обработчик (процессор).
其主要作用是根据url查找控制器,如上url被查找控制器为:success。
4. HandlerExecutionChain передает проанализированную информацию в DispatcherServlet, такую как анализ сопоставления контроллера и так далее.
5. HandlerAdapter представляет адаптер процессора, который выполняет Handler в соответствии с определенными правилами.
6. Обработчик позволяет выполнять конкретный Контроллер.
7. Контроллер возвращает конкретную информацию о выполнении в HandlerAdapter, например ModelAndView.
8. HandlerAdapter передает логическое имя или модель представления в DispatcherServlet.
9. DispatcherServlet вызывает преобразователь представлений (ViewResolver) для разрешения имени логического представления, переданного HandlerAdapter.
10. Конструктор представлений передает разрешенное имя логического представления в DispatcherServlet.
11. DispatcherServlet вызывает конкретное представление в соответствии с результатом представления, проанализированным анализатором представления.
12. Окончательный вид представлен пользователю.