MVC与三层架构理解

33 篇文章 24 订阅
订阅专栏

1. JSP的发展

早期只有Servlet,只能使用response输出标签数据,非常麻烦后来。JSP的出现,简化了 Servlet的开发。但是过度的使用JSP,在JSP中写大量的java代码,又前端的页面,造成难以维护,难于分工协作的窘境。
再后来,随着java的web开发的逐步完善,公司的开发需要形成一种规范,来更好的管理和维护代码,借鉴MVC的开发模式,使得程序的设计更加合理性。

JSP(全称JavaServer Pages)是由Sun公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。

JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。

百度百科复制来的哈!!

2. MVC思想

MVC(Model View Controller)是软件工程中的一种软件架构模式,它把软件系统分为模型、视图控制器三个基本部分。用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

MVC每层之间的逻辑关系:

M:Model,模型。 JavaBean

  • 完成具体的业务操作,如:查询数据库,封装对象

V:view视图。JSP、HTML等来进行数据展示

C:Controller控制器。 Servlet

  • 获取View的请求

  • 调用模型将数据交给视图进行展示

控制器Controller 的作用就是将ModelView一一对应起来

我们用用户登录这个例子来说明:

View层是index.jsp,Cotroller是/loginServlet,Model是JavaBean对象

  1. 用户看到的是JSP展示页面,用户输入数据点击登录按钮时,这是JSP会通过数据共享将请求转发到/loginServlet控制器上

  2. 然后控制器再将请求分发到Model上,通过JDBC连接到数据库来查询数据库中是否存在该用户信息。

  3. 若存在该用户,则返回信息,让控制器告诉前台页面展示登陆成功的信息;不存在则告诉登陆失败…

  4. View来响应控制器交给它的数据

在这个过程中,控制器其实只是起到了承上启下的作用,它只负责中转(指挥调度),不负责具体的业务操作。

优缺点

【优点】

  1. 耦合性低,方便维护,可以利于分工协作

  2. 重用性高

【缺点】

  1. 使得项目架构变得复杂,对开发人员要求高

3. 三层架构

三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层[表示层](User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。

区分层次的目的即为了“高内聚低耦合” 的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。

举一个例子来说明吧:

后厨这个电视剧不知道大家听说过没,那会俺上初中时记得寒假无聊时看的一个剧,剧荒的推荐去看看。

在后厨中,小小的餐厅厨房,却是厨师们的一番战场。都说艺术来源于生活,同样,技术也是如此。其实,三层架构就可以用后厨这个场景来抽象理解。

  • 服务员:负责接待客人和传菜

  • 主厨:后厨的头头,后处里主厨说了算。可以理解为架构师,负责后厨和服务员的对接

  • 小厨:每个小厨有自己特定的工作,各司其职

现在,假设饭店开业了,广大学生战友不用再钉钉,MOOC上网课了,楼下的煎饼果子还是那个味!去饭店吃个大餐,西红柿炒鸡蛋。

他们三者是如何联系的?

我走进饭店,漂亮的服务员小姐姐迎接我,毕节这是个看颜的时代,表示层得好看点才能吃饭体验好。Waitress给我递上了菜单,我在菜单上选菜,兜里仅有的几块钱好纠结哈哈哈哈…我点菜,只是看看菜单就可以了,我总不能去后厨问问大师傅你能做什么菜吧!后厨重地,闲人免进!!!就像我们在浏览器看到的页面一样,我只是看攻城狮们想让我看到的东西。

一番精挑细选之后,我决定点个西红柿炒鸡蛋。Waitress拿着菜单,交给后厨的主厨。主厨拿到我的菜单后,一看这小伙子有品位呀,马上安排小弟们给做,必须安排!

小厨A负责洗菜,小厨B负责切菜,小厨C负责炒菜,小厨D负责装盘。那大师傅干嘛了?

主厨都这个级别了,当然是负责呐喊加油呀!安排小厨们干活,负责给服务员上菜。

这时,店里来了一个大佬,说要吃东坡肉。小厨C一想,我靠,我不会做呀!总不能让客人走吧!这时,主厨说,老铁们,不慌,有我在!然后,大厨在重新安排并且指导手下的4个小弟来做这道菜。

对于主厨来说,小弟们可以说自己不会,但是自己却不能。其实小弟们就是数据访层,他们的操作是原子性的,不能再分割了,会的都是最基本的手艺。但是,自己是业务逻辑层,要删除或是添加一个操作,不是简单地直接删除或是添加,而是由数据访问层这些底层的功能组合起来的操作。在删除时,判断用户是否存在;在添加时,也要判断用户是否存在,防止重复操作造成数据冗余。

为什么使用三层

使用三层架构的目的:解耦!!!

同样拿上面饭店的例子来讲:

  • 服务员(UI层)请假——另找服务员;

  • 主厨(BLL层)辞职——招聘另一个主厨;

  • 小厨(DAL)辞职——招聘另一个小厨;

【顾客反映】

  1. 你们店服务态度不好——服务员的问题。开除服务员;

  2. 你们店菜里有虫子——主厨的问题。换厨师;

任何一层发生变化都不会影响到另外一层!!!


三层架构每层之间的逻辑关系:

三层架构的目的即为了“高内聚,低耦合”的思想。

三层优缺点

【优点】

  1. 开发人员可以只关注整个结构中的其中某一层;

  2. 可维护性高,可扩展性高

  3. 可以降低层与层之间的依赖;

  4. 有利于标准化;

  5. 利于各层逻辑的复用

【缺点】

  1. 降低了系统的性能。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成

  2. 有时会导致级联的修改,这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码

  3. 增加了开发成本

4. MVC与三层架构的区别

直接看图吧

其实,无论是MVC还是三层架构,都是一种规范,都是奔着"高内聚,低耦合"的思想来设计的。三层中的UI和Servlet来分别对应MVC中的View和Controller,业务逻辑层是来组合数据访问层的原子性功能的。

在三层中,业务逻辑层和数据访问层要遵循面型接口编程的。这种接口定义和具体实现逻辑的分开,非常有利于后续扩展和维护!

可以参考一下羊哥文章,写的很通熟易懂。

为什么我们要面向接口编程?!


实例来理解三层结构和MVC

如果文中有论述不严谨的地方欢迎大家批评指正…

MVC+EF+架构设计
01-31
介于这段时间的学习,MVC和EntityFramework再加上自己对框架这部分的理解,弄了这么个Demo,希望大家能给点意见,一起讨论讨论。本章中没有多么高深的理论知识,只是个人对于架构的理解,加上MVC 和EntityFramework,可以说是个整体的部分先贴下我的项目的分布图:整个项目主要采用三层架构,面向接口的编程方式。 CinDou.Web主要放我们的Web页面,CinDou.Route主要放置MVC中Controller,这里我采用把Controller
MVC
weixin_43739465的博客
11-20 898
什么是 MVC 模式 MVC,即 Model 模型、View 视图,及 Controller 控制器。 View:视图,为用户提供使用界面,与用户直接进行交互。 Model:模型,承载数据,并对用户提交请求进行计算的模块。其分为两类,一类称为数据承载 Bean,一类称为业务处理 Bean。所谓数据承载 Bean 是指实体类,专门用于承载业务数据的,如 Student、User 等...
MVC架构模式与三层架构
最新发布
????
01-26 986
详细解读了三层架构MVC以及两者之间的关系
MVC三层架构
03-14
MVC三层架构基础介绍简单来说,Design Patten 就是一个常用的方案。 在我们的开发过程中,经常会遇到一些相同或者相近的问题,每次我们都会去寻找一个新的解决方法,为了节省时间提高效率,我们提供一些能够解决这些常见问题的,被证实可行的方案,构成一个统一的资源库。
mvc三层架构应用案例简单代码
07-30
mvc三层架构应用案例简单代码 详见其中brand-demo 技术:mybatis+maven+mysql+JSP+HTML+servlet+JS
简单易懂的三层架构MVC
11-22
在刚刚步入“多层结构”Web应用程序开发的时候,我阅读过几篇关于“asp.net三层结构开发”的文章。但其多半都是对PetShop3.0和Duwamish7的局部剖析或者是学习笔记。对“三层结构”通体分析的学术文章几乎没有。 2005年2月11日,Bincess BBS彬月论坛开始试运行。不久之后,我写了一篇题目为《浅谈“三层结构”原理与用意》的文章。旧版文章以彬月论坛程序中的部分代码举例,通过全局视角阐述了什么是“三层结构”的开发模式?为什么要这样做?怎样做?……而在这篇文章的新作中,配合这篇文章我写了7个程序实例(TraceLWord1~TraceLWord7留言板)以帮助读者理解“三层结构”应用程序。这些程序示例可以在随带的CodePackage目录中找到——   对于那些有丰富经验的Web应用程序开发人员,他们认为文章写的通俗易懂,很值得一读。可是对于asp.net初学者,特别是没有任何开发经验的人,文章阅读起来就感到非常困难,不知文章所云。甚至有些读者对“三层结构”的认识更模糊了……   关于“多层结构”开发模式,存在这样一种争议:一部分学者认为“多层结构”与“面向对象的程序设计思想”有着非常紧密的联系。而另外一部分学者却认为二者之间并无直接联系。写作这篇文章并不是要终结这种争议,其行文目的是希望读者能够明白:在使用asp.net进行Web应用程序开发时,实现“多层结构”开发模式的方法、原理及用意。要顺利的阅读这篇文章,希望读者能对“面向对象的程序设计思想”有一定深度的认识,最好能懂一些“设计模式”的知识。如果你并不了解前面这些,那么这篇文章可能并不适合你现在阅读。不过,无论这篇文章面对的读者是谁,我都会尽量将文章写好。我希望这篇文章能成为学习“三层结构”设计思想的经典文章!
MVC 三层架构
Regino的博客
04-23 6784
本文介绍了 MVC 三层架构的相关内容。。。
MVC-三层架构-SSM
zoro_soro的博客
04-20 3370
MVC MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。 Model(模型):模型代表一个存取数据的对象或JAVA POJO. 它也可以带有逻辑,在数据变化时更新控制器。 View(视图): 视图代表模型包含的数据的可视化。 Controller(控制器): 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。 MVC架构程序的工作流程是这样的: (1)用户通过View页面向服务端提出请求
MVC三层架构
m0_70693417的博客
05-30 845
数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。StudyCSharp.DAL项目:数据层,程序数据相关操作封装。Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。Controller(控制器)是应用程序中处理用户交互的部分。View(视图)是应用程序中处理数据显示的部分。
MVC 三层架构案例详细讲解
weixin_61635597的博客
05-17 4080
MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。[1-2]模型-视图-控制器(MVC)是[Xerox PARC](https://baike.baidu.com/item/Xerox PARC/10693263?fromModule=lemma_inlink)在二十世纪八十年代为编程语言。
基于三层架构MVC模式应用的完整示例项目源码
06-12
CodematicDemoMVC示例源码 CodematicDemoMVC 是一个基于三层架构MVC模式应用的完整示例项目源码,基于Asp.net 3.5开发, 结构更简洁,提供更多有效的示例源码参考。 方便用户更好的理解和使用该架构进行开发,配合动软.Net代码生成器,可以使开发效率事半功倍,倍感轻松。 该项目涉及如下几项要点应用: 1) 基于标准的三层结构。 2) 表示层采用MVC模式。 3) 数据的增、删、改、查操作。 4) 列表数据显示及分页处理。 5) Linq的应用等。
茶叶MVC 三层架构
04-01
茶叶,三层架构,Visual Studio 2013 6666666666
asp.net MVC三层架构
04-22
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。 通常模型对象负责在数据库中存取数据。 View(视图)是应用程序中处理数据显示的部分。 通常视图是依据模型数据创建的。 Controller(控制器)是应用程序中处理用户交互的部分。 通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。 MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。 MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。这个适合刚接触三层架构的来学习,比较简单。
三层架构框架建设实例
12-27
1. 使学生能理解三层架构框架思想; 2. 培养学生能搭建应用程序基本框架的能力; 3. 巩固学生对vs.net2005开发工具的使用; 4. 培养学生应用配置文件的技巧; 5. 理解MVC各组件(实体类、控制类、数据操纵类)的关系; 6. 巩固对数据库的基本操作(添加,查询); 7. 巩固对GridView控件使用;
mvc.zip_三层架构 细化
09-24
标准的MVC结构 从三层结构细化到五层 并含有impl及工厂类 实现基本的增删改查 适合初学者理解mvc结构
C#三层架构MVC项目源码
11-11
本程序一个基于三层架构MVC模式应用的完整示例项目源码,基于Asp.net 3.5开发, 结构更简洁,提供更多有效的示例源码参考。 方便用户更好的理解和使用该架构进行开发,配合动软.Net代码生成器,可以使开发效率...
J2EE中MVC三层架构的实现
09-12
javaMVC理解,这个ppt或许会你带来部分疑惑解答
三层架构设计模式MVC和AOP面向切面编程-SSM框架的学习与应用-Java EE企业级应用开发学习记录(第九天)
09-05
本资源将深入探讨软件开发中两个关键的设计和编程概念:三层架构设计模式MVC)和面向切面编程(AOP)。这两个概念是现代软件开发中不可或缺的组成部分,它们有助于提高代码的可维护性、可扩展性和可重用性。通过...
mvc 与传统三层的优缺点
09-01
MVC(Model-View-Controller)和传统三层架构都是常用的软件开发架构模式,它们各自具有一些优点和缺点。 首先来看MVCMVC是将应用分为三个组件:模型(Model)、视图(View)和控制器(Controller)。其优点有: 1. 分离关注点:MVC的核心思想是分离应用程序的不同关注点,使得模型、视图和控制器能够相互独立地开发和维护,提高了代码的可读性和可维护性。 2. 可复用性:MVC模式中的模型、视图和控制器都可以在其他应用程序中进行复用,从而减少了重复开发的工作量。 3. 可测试性:由于MVC模式中的模块相互独立,因此可以更容易地对其进行单元测试和集成测试,提高了代码的质量和可测试性。 4. 灵活性:MVC模式可以有效支持应用程序的灵活性和可扩展性,使得新增功能或修改应用程序变得更加简单和快捷。 然而,MVC也存在一些缺点,如下: 1. 学习曲线陡峭:相比几乎没有软件架构要求的传统三层架构MVC模式对于开发人员来说需要学习和理解一些新的概念和设计原则,导致学习曲线较陡峭。 2. 增加开发工作量:由于MVC模式需要将应用程序分为三个组件,因此在开发过程中需要创建更多的类和文件,增加了开发工作量和代码量。 3. 不适用于小型应用程序:MVC模式对于小型的简单应用程序来说可能过于复杂和繁重,不适用于所有应用场景。 4. 视图和控制器的传递数据较为复杂:由于MVC模式中视图和控制器之间的数据传递和交互较为复杂,因此增加了开发的复杂性。 对比传统的三层架构,其优点和缺点也类似。三层架构的优点在于结构清晰、易于理解和维护,适用于较小的应用程序开发;缺点在于对于大型复杂应用程序可能不够灵活和可扩展,容易造成耦合问题。 总的来说,无论是MVC还是传统的三层架构,都有其适用的场景和优缺点。在选择使用哪种架构时,需要综合考虑具体的应用需求、开发团队的技术水平和项目规模等因素。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 字符串如何比较大小 83554
  • Java中的Object类 76713
  • MVC与三层架构理解 74106
  • 【三种方法】Java生成指定范围内随机数 69980
  • Maven安装配置及在idea中配置 59223

分类专栏

  • Android 4篇
  • Android Layout 1篇
  • 列表项专题 3篇
  • Components
  • Flutter
  • Dart
  • Android踩坑记录 5篇
  • Java 1篇
  • JavaSE 26篇
  • Java进阶 34篇
  • JavaWeb 33篇
  • JavaEE 10篇
  • 设计模式 3篇
  • Jopic 16篇
  • 算法与数据结构 13篇
  • 码不停题
  • Topic 10篇
  • LeetCode 15篇
  • 码上行动 1篇
  • 【Java复习总结】 2篇
  • 【笔试题目】 5篇
  • 【项目实战】 1篇
  • 【自我复盘】
  • 数据库 5篇
  • git 1篇
  • 日常踩坑记录 8篇
  • 网络 8篇
  • GO 1篇
  • Python 1篇
  • C 11篇
  • Unity3D 1篇
  • 【生活随笔】
  • 工具安装配置 20篇
  • 电脑百科 8篇

最新评论

  • 『2020最新』Genymotion个人免费版安装教程及配置到Android Studio中

    秋山玉佩: 这么牛表情包

  • Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter

    小花704: 类似的问题。加个?就好了。感谢表情包

  • Java中的参数传递,到底是值传递还是引用传递?

    Rain_Lv: 解释地真的好,通俗易懂

  • 配置Tomcat及创建Web项目详细过程

    bumingbuming: 博主,你的背景图片发一下呗

  • 【亲测有效】解决部分网页打不开的方法(特别是CSDN),电脑浏览器突然打不开某个网页,其他网页正常使用解决方法

    2202_75518028: 输入你的命令后,电脑所有浏览器下载速度都特别慢怎么办

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • Kotlin/Java实用ARouter遇到的问题Compiler An exception is encountered和There is no route match the path [/xxx
  • Caused by: java.lang.RuntimeException: Duplicate class android.support.v4.app.INotificationSideChann
  • 【Mac】XXX软件安装包已损坏,无法打开。您应该将它移到废纸篓 或者 无法打开XXXX,因为无法确认开发者的身份
2023年2篇
2022年3篇
2021年15篇
2020年144篇
2019年68篇
2018年12篇

目录

目录

评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司福田网络广告推广价格商丘网站优化按天计费报价岳阳网站建设多少钱苏州seo网站推广多少钱自贡网站制作设计多少钱布吉百搜标王推荐鹤壁阿里店铺运营公司六安网站推广方案绥化模板制作公司蚌埠SEO按天扣费多少钱盐田SEO按天扣费价格丹竹头网站搭建哪家好盐城网站改版价格郑州SEO按天计费价格金华建设网站价格甘南外贸网站建设价格广东百度seo多少钱武威百姓网标王推广价格怀化企业网站改版多少钱诸城营销网站多少钱阜阳网站seo优化多少钱庆阳网页设计汕尾网站推广工具公司曲靖百姓网标王报价广安百度标王推荐宣城百度标王哪家好福州百度seo报价巴中网站制作报价兴安盟网站搜索优化公司宜昌网站推广系统哪家好歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化