MVC模式与三层架构

什么是MVC模式

MVC,即 Model 模型、View 视图,及 Controller 控制器

注意:这里只说了 MVC 是一种模式,而没有说是一种设计模式,设计模式中是不包括 MVC 的,但有些地方却是直接叫 MVC 设计模式,这点要明确

  • View:视图,用于为用户提供使用界面以及与用户直接进行交互

    视图层 jsp 等文件担任,其中用到的技术包括但不限于html、css等

    在没有 jsp 之前,使用的是 servlet 做视图,很麻烦,而且 servlet 既要做页面显示,还要处理业务逻辑,耦合度很高,所以后来就出现了 jsp,用于做页面展示,其实 jsp 就是一个 servlet

    既然 jsp 就是一个 servlet,那么它也是既能做页面展示,又能做业务逻辑处理的,这也正好和我们可以在 jsp 页面中嵌入 Java 代码是一致的

  • Model:模型,用于承载数据,并对用户提交的请求进行处理。其分为两类,一类称为数据承载 Bean(业务模型),一类称为业务处理 Bean(数据模型)(有些也将 Bean 成为 JavaBean,其实都是一样的,理解即可)

    所谓数据承载 Bean 就是指实体类,专门用户承载业务数据的,如 Student、User 等,往往对应数据库中的一张表。而业务处理 Bean 则是指 Service 或 Dao 对象,专用于处理用户请求的,如 LoginDao.java 封装了用户的登录逻辑

  • Controller:控制器,用于接收用户请求,并将请求跳转(转发或重定向)到对应的 Model 进行处理;Model 处理完毕后,将结果返回给控制器,结果经过渲染后,再由控制器将结果返回给视图的请求处

由以上分析可知,View/视图 这个角色是由 jsp 扮演的,Model/模型 这个角色是由 Entity 和 Service 扮演的,Controller/控制器 这个角色是由 servlet 扮演的

MVC架构程序的工作流程

  • 用户通过 View 页面向服务端提出请求,可以是表单请求、超链接请求、AJAX请求等

  • 服务端 Controller 控制器接收到请求后对请求进行解析,找到相应的 Model 对用户请求进行处理

  • Model 处理后,将处理结果再交给 Controller

  • Controller 在接到处理结果后,根据处理结果找到要作为向客户端发回的响应 View 页面。页面经渲染(数据填充)后,再发送给客户端。

在这里插入图片描述

什么是三层架构

什么是系统架构

所谓系统架构是指,整合应用系统程序大的结构。经常提到的系统结构有两种:三层架构与MVC。这两种结构既有区别,又有联系。但这两种结构的使用,均是为了降低系统模块间的耦合度

什么是三层架构

三层架构是指:表现层View、业务逻辑层 Service 与数据访问层 DAO,其实还要加上一个实体类库 Model,即 Java 中的实体类。一般来说,实体类库需要被其它三层引用

  • 表现层:从表象上看,就是用户直接看到的界面

  • 业务逻辑层:好比是一个桥梁,将表现层与数据访问层联系起来,主要负责处理业务逻辑相关的问题,比如在调用访问数据库的代码之前,先对数据进行处理与判断

  • 数据访问层:直接操作数据库的代码,即根据业务需求,构造 SQL 语句,对数据库进行增删改查等操作

这里需要明确的是,数据最终并不是存在数据库的,而是存在硬盘等存储介质上,只是存在数据库中方便我们对数据进行增删改查以及一些安全性等方面的考虑。从理论上来说,以 txt 或者 excel 等其它任何格式存储都是可以的

微服务也是架构的一种
单体应用使用三层架构一般就可以了

为了更好的降低各层间的耦合度,在三层架构程序设计中,采用面向抽象/接口编程。即上层对下层的调用,是通过接口实现的。而下层对上层的真正服务提供者,是下层接口的实现类。服务标准(接口)是相同的,服务提供者(实现类)可以更换。这就实现了层间解耦合

各层之间的引用关系

在这里插入图片描述

MVC 与三层架构的对应关系

在这里插入图片描述

总结

由此可见,MVC 模式主要是应用在三层架构中的表现层(View)的

MVC 中的 V 也是指的 View

所以,三层架构 和 MVC 的联系与区别就是:在单体应用的开发中,首先是将项目分为表现层、业务逻辑层、数据访问层这三层,然后在表现层这一层还要运用一个模式,即 MVC 模式,用于将业务与展示分离

三层架构指的是一种软件设计架构/系统架构,就像微服务这种架构一样,而 MVC 是应用在三层架构中的其中一层 —— View 层的

这篇文章的视角比较独特,可以参考:https://www.cnblogs.com/kubixuesheng/p/10340313.html

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值