提示:博客中的图片来源于动力节点在B站的视频讲解。
MVC架构模式与三层架构
- 一、三层架构
- 二、MVC(model view controller)
- 1.MVC 架构的工作流程
- (1)JSP + Servlet + javabean实现MVC。
- (2)SSM(Spring、SpringMVC、MyBatis)
- 三、三层架构与MVC的关系
一、三层架构
- 三层架构是指:视图层view(表现层),服务层service(业务逻辑层),持久层Dao(数据访问层)
- 表现层(UI):直接跟前端打交互(⼀是接收前端ajax请求,⼆是返回json数据给前端)
- 业务逻辑层(BLL):⼀是处理表现层转发过来的前端请求(也就是具体业务),⼆是将从持久层获
取的数据返回到表现层。 - 数据访问层(DAL):负责数据库的访问(可以访问数据库、二进制文件、文本文件等),是对数据库,而不是对数据的操作。直接操作数据库完成CRUD,并将获得的数据返回到上⼀层(也就是业务逻辑层)。
- 三层架构的出现是为了降低耦合度,在这里,使用面向抽象编程,也就是上层对下层的调用,直接通过接口来完成,下层对上层的真正服务提供者,是下层实现的接口实现类。实现类是可以更换的,这就实现了层间的解耦合。
- 实际项目中的包命名结构,其实就是三层架构的体现:
二、MVC(model view controller)
- MVC是软件工程中的一种软件架构模式,它是一种分离业务逻辑与显示界面的设计方法,它把软件系统分为三个基本部分:模型(model)、视图(view)、控制器(controller)
- 控制器 controller:对请求进行处理,负责请求转发,也就是事件,用于流程的控制;
- 视图view:界面设计人员进行图形界面设计,也就是GUI组件,用于数据的展示;
- 模型model:编写程序应用功能(实现算法等等),数据库管理,也就是实体类。用于数据的封装和数据的传输; model一般分为以下两类:
- 数据承载bean,数据承载bean是指实体类专门承载业务数据的,比如Student,User等。
- 业务承载bean,业务处理bean是指Service或者Dao对象,专门处理用户的请求的。
1.MVC 架构的工作流程
- 用户通过 View 页面向服务端提出请求,可以是表单请求、超链接请求、AJAX请求等。
- 服务端 Controller 控制器接收到请求后对请求进行解析,找到相应的 Model(Service和Dao)对用户请求进行处理。
- Model 处理后,将处理结果再交给 Controller。
- Controller 在接到处理结果后,根据处理结果找到要作为向客户端发回的响应View页面。页面经渲染(数据填充)后,再发送给客户端。
(1)JSP + Servlet + javabean实现MVC。
(2)SSM(Spring、SpringMVC、MyBatis)
- SSM,即 SpringMVC、Spring 与 MyBatis 三个框架。
- 它们在三层架构中所处的位置是不同的,即它们在三层架构中的功能各不相同,各司其职。
- SpringMVC:作为 View 层的实现者,完成用户的请求接收功能。SpringMVC 的 Controller作为整个应用的控制器,完成用户请求的转发及对用户的响应。Spring MVC是主流的Web框架。
- MyBatis:作为 Dao 层的实现者,完成对数据库的增、删、改、查功能
- Spring:以整个应用大管家的身份出现。整个应用中所有 Bean 的生命周期行为,均由Spring 来管理。即整个应用中所有对象的创建、初始化、销毁,及对象间关联关系的维护,均由 Spring 进行管理。
三、三层架构与MVC的关系
- MVC 是在三层架构的基础上设计的一种框架型架构,三层架构是一种宏观的概念,而 MVC 就是一种比较具体的三层架构的框架实现。
- 它们二者使用范围不同:三层可以应用于任何语言、任何技术的应用程序;而MVC只是为了解决B-S应用程序视图层各部分的耦合关系。它们互不冲突,可以同时存在,也可根据情况使用其中一种。
- 之所以我们会混淆,是因为在进行web开发时两者会同时使用。
- 在三层架构设计中,表示层可由MVC设计模式中的视图(view)和控制器(controller)来实现,而业务逻辑层和数据访问层则组成MVC设计模式中的模型(Model)的实现。
- 因此,在实际的应用中,都是采用三层架构来搭建系统的框架,而表示层与业务逻辑层和数据访问层的交互则是通过MVC设计模式来实现。