MVC设计模式简介
MVC 设计模式一般指 MVC 框架,M(Model)指数据模型层,V(View)指视图层,C(Controller)指控制层。使用 MVC 的目的是将 M 和 V 的实现代码分离,使同一个程序可以有不同的表现形式。其中,View 的定义比较清晰,就是用户界面。
在 Web 项目的开发中,能够及时、正确地响应用户的请求是非常重要的。用户在网页上单击一个 URL 路径,这对 Web 服务器来说,相当于用户发送了一个请求。而获取请求后如何解析用户的输入,并执行相关处理逻辑,最终跳转至正确的页面显示反馈结果,这些工作往往是控制层(Controller)来完成的。
在请求的过程中,用户的信息被封装在 User 实体类中,该实体类在 Web 项目中属于数据模型层(Model)。
在请求显示阶段,跳转的结果网页就属于视图层(View)。
像这样,控制层负责前台与后台的交互,数据模型层封装用户的输入/输出数据,视图层选择恰当的视图来显示最终的执行结果,这样的层次分明的软件开发和处理流程被称为 MVC 模式。
在学习 Servlet 及 JSP 开发时,JavaBean 相当于 Model,Servlet 相当于 Controller,JSP 相当于 View。
总结如下:
视图层(View):负责格式化数据并把它们呈现给用户,包括数据展示、用户交互、数据验证、界面设计等功能。
控制层(Controller):负责接收并转发请求,对请求进行处理后,指定视图并将响应结果发送给客户端。
数据模型层(Model):模型对象拥有最多的处理任务,是应用程序的主体部分,它负责数据逻辑(业务规则)的处理和实现数据操作(即在数据库中存取数据)。
SUN 公司推出 JSP 技术的同时,也推出了两种 Web 应用程序的开发模式。即 JSP+JavaBean 和 Servlet+JSP+JavaBean。 JSP+JavaBean
JSP+JavaBean 中 JSP 用于处理用户请求,JavaBean 用于封装和处理数据。该模式只有视图和模型,一般把控制器的功能交给视图来实现,适合业务流程比较简单的 Web 程序。
通过上图可以发现 JSP 从 HTTP Request(请求)中获得所需的数据,并进行业务逻辑的处理,然后将结果通过 HTTP Response(响应)返回给浏览器。从中可见,JSP+JavaBean 模式在一定程度上实现了 MVC,即 JSP 将控制层和视图合二为一,JavaBean 为模型层。
JSP+JavaBean 模式中 JSP 身兼数职,既要负责视图层的数据显示,又要负责业务流程的控制,结构较为混乱,并且也不是我们所希望的松耦合架构模式,所以当业务流程复杂的时候并不推荐使用。
Servlet+JSP+JavaBean
Servlet+JSP+JavaBean 中 Servlet 用于处理用户请求,JSP 用于数据显示,JavaBean 用于数据封装,适合复杂的 Web 程序。
多视图共享一个模型,大大提高了代码的可重用性
Servlet+JSP+JavaBean 模式的结构清晰,是一个松耦合架构模式,一般情况下,建议使用该模式。 MVC优缺点
任何一件事都有利有弊,下面来了解一下 MVC 的优缺点。
优点
多视图共享一个模型,大大提高了代码的可重用性
MVC 三个模块相互独立,松耦合架构
控制器提高了应用程序的灵活性和可配置性
有利于软件工程化管理
总之,我们通过 MVC 设计模式最终可以打造出一个松耦合+高可重用性+高可适用性的完美架构。
缺点
原理复杂
增加了系统结构和实现的复杂性
视图对模型数据的低效率访问
MVC 并不适合小型甚至中型规模的项目,花费大量时间将 MVC 应用到规模并不是很大的应用程序,通常得不偿失,所以对于 MVC 设计模式的使用要根据具体的应用场景来决定。
开课吧广场-人才学习交流平台
自动驾驶运输车跑1500公里比人类快10小时图片来自TuSimple汽车自动驾驶技术,如果得到充分发展,最终有可能比手动驾驶更能减少事故发生的可能性。以目前的技术,在没有十字路口和行人且可以持续匀速行驶的高速公路上,自动驾驶
助力智能消费,北京消费季发放10亿元消费券北京消费季在海淀区中关村启动,在整个活动期间,多家企业将联手发放10亿元智能和信息消费券,从而吸引更多消费者主动进行消费。毕竟现在暑假是智能科技产品消费的高峰期,那么针对暑期,需要
四门更实用2。88万元起售对标宏光MINIEV朋克多多正式开启预售朋克汽车此前公布了美多啦系列的第二款车,朋克多多。朋克多多定位微型电动车,此次公布的预售车型共有三款,分别是靓多多乐多多酷多多,他们的预售价分别为2。883。283。98万元。从预
稳定币和比特币的区别究竟是什么?在区块链领域第一个被应用的数字货币就是比特币,比特币从诞生至今一直都是数字货币中的龙头,即使如此,比特币的波动还是很大的,作为货币其波动性如此之大,是很难进行商品交换的,为了解决这
JavaSE基础第8篇封装和继承private关键字使用private修饰的私有属性只能在它所在类中被访问,如果外界想要访问私有属性,需要提供公有方法,包括用于获取属性值的getXxx()方法和设置属性值的set
大数据的培训中修改MongoDB数据类型的讲解在大数据的培训中,Mongo是一个高性能开源无模式的文档数据库,在很多场景下可以用来替代传统的关系数据库或者键值存储模式。而对于修改mongodb中数据类型,我们是如何做的呢?Mo
征程5发布,地平线打开自动驾驶芯片新格局首先,花一分钟我们来了解一下征程5系列芯片的8个亮点征程5是业界第一款集成自动驾驶和智能交互于一体的全场景整车智能中央计算芯片征程5单颗芯片AI算力最高可达128TOPS,支持16
内外兼修,一款真正的5G旗舰手机,荣耀30Pro你值得拥有哈喽大家好,我是你们的老朋友小生,每天都会给大家更新我的原创内容,今天我们一起来看看荣耀30Pro这部手机吧!外观方面,荣耀30Pro的正面是一块6。57英寸效果相当惊艳的70超曲
5部开启狠降模式的真香旗舰,每一部都极具性价比,值得入手Realme真我GT大师探索版Realme真我GT大师探索版是刚发布不久的新机,也是Realme质感最好的一部手机,12256GB版本的价格为3199元,首发3099元,没想到上市
5G奥运,不一样的科技惊喜5G奥运,不一样的科技惊喜东京奥运已经在北京时间8月8日晚落下帷幕,众所周知受疫情影响观众不能进场,广大体育迷只能开启云追奥运模式。然而5G黑科技的身影充斥在场内外的每个角落,成为
中兴Axon305G评测向真全面屏又迈出一大步近几年各大手机厂商都对全面屏显示有着不同的理解,尤其是刘海屏水滴屏打孔屏我们都颇为熟悉,但是这些解决方案严格意义来说都称不上全面屏幕手机。要保证前置摄像头的功能情况下打造一块完美无