文章目录
- 一、回顾 MVC 模式
- 二、初始 Spring MVC
- 2.1 Spring MVC 核心组件
- 2.1.1 前端控制器(DispatcherServlet)
- 2.1.2 处理器映射器(HandlerMapping)
- 2.1.3 处理器适配器(HandlerAdapter)
- 2.1.3 后端控制器(处理器)
- 2.1.4 视图解析器(ViewResolver)
- 2.2 Spring MVC 的执行流程
一、回顾 MVC 模式
MVC 是模型(Model),视图(View),控制器(Controller)的简写,是一种软件设计的代码规范,将业务逻辑、数据以及显示完全分离开来。MVC 并不是一种设计模式,MVC 是一种结构模式。 并且不同的 MVC 之间也是存在着差异的。
-
Model(模型):
数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为Service)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。
-
View(视图):
负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。
-
Controller(控制器):
接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。也就是说控制器做了个调度员的工作。
-
职责分析:
-
Controller:控制器
-
取得表单数据
-
调用业务逻辑
-
转向指定的页面
-
-
Model:模型
-
业务逻辑
-
保存数据的状态
-
-
View:视图
- 显示页面
-
- MVC 模式的主要作用: 降低视图与业务逻辑之间的双向耦合
最典型的 MVC 就是 JSP + servlet + javabean 的模式。
二、初始 Spring MVC
Spring MVC官方文档
-
什么是 Spring MVC
-
Spring MVC就是一个 Spring 内置的 MVC 框架,是基于Java实现MVC的轻量级Web框架。
MVC框架,它解决WEB开发中常见的问题(参数接收、文件上传、表单验证、国际化等等),而且使用简单,与Spring无缝集成。支持 RESTful风格的URL请求。
采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性。
-
-
MVC框架要做哪些事情
1、将url映射到java类或java类的方法 .
2、封装用户提交的数据 .
3、处理请求–调用相关的业务处理–封装响应数据 .
4、将响应的数据进行渲染 . jsp / html 等表示层数据 .
-
常见的服务器端MVC框架有:
-
Struts、Spring MVC、ASP.NET MVC、Zend Framework、JSF;常见前端MVC框架:vue、angularjs、react、backbone;由MVC演化出了另外一些模式如:MVP、MVVM 等等…
-
-
Spring MVC 的作用
-
MVC模式(Model-View-Controller):解决页面代码和后台代码的分离。
-
-
Spring MVC 的底层
-
在没有使用 Spring MVC 之前我们都是使用 Servlet 在做 Web 开发。但是使用 Servlet 开发在接收请求参数,数据共享,页面跳转等操作相对比较复杂。Servlet 是 java 进行 web 开发的标准,既然 Spring MVC 是对 Servlet 的封装,那么很显然 Spring MVC 底层就是Servlet,Spring MVC 就是对 Servlet 进行深层次的封装
-
2.1 Spring MVC 核心组件
Spring MVC 有着多个组件,这些核心组件共同协作,使得Spring MVC能够处理请求、调度处理器、渲染视图,并提供灵活的拦截器和数据绑定机制。通过使用这些组件,我们可以方便地构建和管理Web应用程序的请求处理流程。
2.1.1 前端控制器(DispatcherServlet)
-
前端控制器是Spring MVC框架的核心,它充当了所有请求的中央处理器。在Spring MVC中,DispatcherServlet 充当了前端控制器的角色。
前端控制器负责接收用户的提交的所有请求,如传统的jsp文件,调用其他的控制器 Controller 对象,并把请求处理的结果显示给用户。并且可以接收所有的 HTTP 请求,并将请求分发给合适的处理器进行处理。-
DispatcherServlet :该类本身就是一个 Servlet,因为其继承了 Servlet
-
2.1.2 处理器映射器(HandlerMapping)
-
执行后端控制器(Handler),拿到后端控制器返回的结果 ModelAndView 后将结果返回给前端控制器 DispatcherServlet。
2.1.3 处理器适配器(HandlerAdapter)
-
处理器适配器,执行后端控制器(Handler),拿到后端控制器返回的结果ModelAndView后将结果返回给前端控制器 DispatcherServlet。
2.1.3 后端控制器(处理器)
-
后端控制器(处理器)(Handler),主要负责处理前端请求,完成业务逻辑,生成ModelAndView对象返回给 HandlerAdapter。
2.1.4 视图解析器(ViewResolver)
-
视图解析器(ViewResolver),主要负责将从DispatcherServlet中拿到的ModelAndView对象进行解析,生成View对象返回给DispatcherServlet。
2.2 Spring MVC 的执行流程
-
Spring MVC 的执行流程图,如下所示:
-
Spring MVC 具体的执行流程
-
1.客户端浏览器向前端控制器(DispatcherServlet)发出请求。
-
2.DispatcherServlet接收到请求后,调用处理器映射器(HandlerMapping)。
-
3.HandlerMapping根据请求url查找相应的处理器(Handler,也称后端控制器),返回处理器对象(Handler),并且如果有处理器拦截器(HandlerInterceptor)的话,会将处理器对象(Handler)和处理器拦截器对象(HandlerInterceptor)一并返回给DispatcherServlet。
-
4.DispatcherServlet拿到这些信息后,会调用处理器适配器(HandlerAdapter),HandlerAdapter会执行Handler,Handler执行处理DispatcherServlet发来的请求,生成ModelAndView对象返回给HandlerAdapter。
-
5.HandlerAdapter将ModelAndView对象返回给DispatcherServlet。
-
6.DispatcherServlet在拿到ModelAndView对象之后,将ModelAndView对象发给视图解析器(ViewResolver)。
-
7.ViewResolver将ModelAndView对象进行解析,生成View对象,将View对象返回给DispatcherServlet。
-
8.DispatcherServlet拿到View对象,对jsp 页面进行渲染(将模型数据填充到视图中),将渲染后的页面呈现给用户。
-