【从HTTP到web框架、web框架】MVC模式、三层架构与SpringMVC关系

开篇词

写作目的:巩固基础,将理论和实践结合。本篇文章探究MVC分层和三层架构的理念,以及SpringMVC框架与三层架构、MVC的关系。
文章思路:首先介绍MVC分层、三层架构概念,随后说明MVC分层和三层架构的关系,最后说明工程中常用的SpringMVC框架与三层架构、MVC分层的关系。
读后收获:拎得清MVC分层、三层架构;分别知道两种分层架构的解耦原理;SpringMVC技术解决方案与两种分层架构的关系。

1、怎么理解MVC分层

MVC分层是一种指导组织代码的思想,这种指导思想的最终目的是解耦(解的是视图和模型的耦)、解耦的目的是提高复用性(提升的是模型层复用性)。MVC分层概念:
M(模型层):模型层用来处理数据,指工程中的javaben。javabean又分为两类,一类是承载数据的实体,另一类是处理数据的service和dao对象。
V(视图层):视图层用来展示数据,负责对接用户交互。指工程中的jsp、html、vue等视图类型。
C(控制层):控制层用来接收和响应请求。指工程中的servlet、controller。

如下表示MVC分层模式下的请求、响应在各层间的协作处理流程:

MVC交互流程

请求流程:用户通过视图层发起请求,控制层Controller接收到请求,并调用模型层处理数据。
响应流程:模型层处理数据后,将结果返回给控制层,控制层找到对应的视图,根据数据渲染视图,并将渲染后的视图结果返回给浏览器。

如下表示采用MVC分层实现解(复)耦(用)的原理:

MVC分层解耦原理

如图所示,不考虑视图层复用,控制层复用也没意义。我们要讨论的是模型层和视图层的解耦。在图中一个视图对应一个控制器,一个控制器编排了多个模型。在MVC分层模式下通过控制层将模型层与视图层解耦,由控制层将模型层提供的数据按一定规则分配给某个视图,因此视图层是模型层和视图层解耦后的粘合剂。如图,模型1被视图1通过控制器1使用;模型1、模型2被控制器2编排后提供给视图2使用;模型2被视图3通过控制器3使用。

2、怎么理解三层架构

三层架构也是一种指导组织代码的思想,这种思想最终的目的也是解耦(解的是视图层与业务逻辑层的耦、业务逻辑层与数据访问层的耦)。解耦的目的是降低层间依赖,提高层内扩展性。


三层架构

三层架构概念:
表示层:负责接收和响应请求。接收到请求后,不涉及到业务逻辑判断,便将请求内容传给业务逻辑层,并在拿到业务逻辑层结果后,做与响应结果相关的处理,包括视图渲染、响应结果封装等。
业务逻辑层:负责接收表示层提供的请求内容,并结合请求内容做业务逻辑处理,必要时调用数据访问层完成数据操作,并将业务逻辑的处理结果返回到表示层。
数据访问层:负责接收业务逻辑层的请求内容,不包含业务逻辑相关判断,实现数据操作,将操作结果返回到业务逻辑层。

如下图表示三层架构实现层间解(扩)耦(展)原理:

三层架构解耦原理

如图所示,三层架构依靠接口和实现分离达到降低层间依赖的目的,并通过一个接口多个实现达到层内扩展的目的。

3、三层架构和MVC的关系

三层架构和MVC没有半毛钱关系,两者的目的虽然都是解耦,但是实现解耦目的时的关注点不同。三层架构解耦是通过接口和实现分离达到降低层间依赖、提高层内扩展的目的;MVC模式解耦是通过控制层实现视图层和模型层的解耦。如下图表示,三层架构和MVC分层的对应关系:


三层架构与MVC模式对应关系

4、SpringMVC与三层架构、MVC分层的关系

SpringMVC在三层架构中只关注表示层技术领域;在MVC分层结构中,只关注视图层和控制层技术领域。因此SpringMVC是在不同分层思想架构中,对应层的技术解决方案。

总结

MVC是一种组织代码的指导思想,它的目标是解耦(视图层和模型层的耦合),解耦的目的是实现模型层的复用。
三层架构也是一种组织代码的知道思想,它的目标是解耦(层间解耦),解耦的目的是降低层间依赖、提高层内扩展。
SpringMVC是三层架构中表现层的技术解决方案,是MVC分层结构中的视图层和控制层技术解决方案。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,063评论 6 510
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,805评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,403评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,110评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,130评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,877评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,533评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,429评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,947评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,078评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,204评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,894评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,546评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,086评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,195评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,519评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,198评论 2 357

推荐阅读更多精彩内容