一、简介:
MVC:是一种架构模式,将业务逻辑和页面展示分离,使程序分层、分工合作,既相互独立,又协同合作。
MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计 规范。
Model(模型) :数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或 JavaBean组件,不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为Service)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。
View(视图):负责进行模型的展示,将逻辑视图解析成物理视图并渲染。
Controller(控制器):接收用户请求,委托给模型进行处理,处理完毕后把返回的模型数据返回给视图,由视图负责展示。起调度作用。
二、流程图
1. 请求到达: 客户端发起一个HTTP请求到服务器,请求被Spring MVC的前端控制器DispatcherServlet拦截。
2. 查找处理器 :DispatcherServlet接收到请求后,会查询HandlerMapping处理器映射器来确定请求应该由哪个控制器(Controller)来处理。处理器映射器会根据请求的URL路径找到与之匹配的处理器。
3. 处理器适配与执行 :找到合适的处理器后,DispatcherServlet会将请求传递给HandlerAdapter处理器适配器。处理器适配器负责调用控制器中的具体方法来处理请求,并处理方法的返回值。
4. 模型数据准备: 控制器在处理请求时,可能会操作模型数据(Model),这些数据会被封装到一个对象中,并通过ModelAndView对象传给视图解析器。同时,控制器会指定逻辑视图名,指示下一步应呈现哪个视图。
5. 视图解析 :DispatcherServlet根据ModelAndView中的视图名,通过ViewResolver视图解析器找到实际的视图对象(如JSP页面)。视图解析器会将逻辑视图名转换成实际的视图对象。
6. 渲染视图: 视图对象负责渲染模型数据,即将模型数据填充到响应页面中。这个过程中,视图可能需要访问之前存入模型中的数据。
7. 响应客户端:最终,填充好的视图(通常是HTML页面)作为HTTP响应体的一部分,由DispatcherServlet发送回客户端,完成整个请求处理流程。
三、SpringMVC核心组件
SpringMVC框架的核心组件主要包括以下五个部分:
1. DispatcherServlet(前端控制器):
作为整个Spring MVC应用的入口点,负责接收HTTP请求并响应。
分发请求到具体的处理器(Controller)。
联合其他组件协同工作,完成请求的处理流程。
2. HandlerMapping(处理器映射器):
负责将接收到的请求映射到具体的处理器(Controller的处理方法)。
支持不同的映射策略,如基于URL路径、注解等。
3. HandlerAdapter(处理器适配器):
用于调用处理器(Controller方法)并处理其返回的结果。
适配不同类型的处理器,使得DispatcherServlet能与各种类型的控制器协同工作。
4. ViewResolver(视图解析器):
根据逻辑视图名解析出实际的视图对象(如JSP、Thymeleaf模板等)。
将模型数据传递给视图,准备渲染。
5. Controller(控制器):
实现业务逻辑,处理来自用户的请求。
负责向模型添加属性,并决定视图名称(或直接返回视图)。