MVC开发模式详解
转自:https://blog.csdn.net/qq_33991989/article/details/78966071
MVC设计模式详解
1.Model-View-Controller(模型-视图-控制器)
MVC设计模式实际上强制性地将程序的输入、处理、和输出分开。
Model-View-Controller实际上担当着不同的角色。
Model:代表着业务数据和业务逻辑处理,(主要包括业务逻辑模块(web项目中的dao类)和数据模块(model类)和JavaBean相同,由Model提供视图的显示数据,同时一个Model可以为多个视图提供业务数据,因此Model也就提高应用程序的可重用性。
View:代表视图,也就是与用户交互的界面,可以给用户显示业务逻辑数据,同时也可以 接收用户输入的数据。(在web项目中以jsp作为view)
注意:在视图中不对数据进行任何的业务逻辑处理。
Controller:代表控制器,用来接收从视图输入的参数,同时调用对应的Model模型对数据进行业务逻辑处理,同时将处理好的数据传递到对应的视图来显示给用户。(在web项目中以Servlet作为控制器)
MVC的处理顺序:首先是用户通过视图将参数输入提交到控制器,控制器调用对应的Model去处理,同时将处理好的数据输出到对应的视图显示给用户。
代表性的MVC框架有:Struts、SpringMVC、Tapestry
2.最典型的MVC就是JSP + servlet + javabean的模式
我们就使用这种模式开发!
疑惑:为什么要使用MVC设计模式?
1)在MVC设计模式中,强制地把应用程序的输入、处理和输出分开,这样就降低了应用程序的耦合性,使得web开发中的每个组件得以分开,分别负责处理不同的事情,对后来的维护会变得更轻松,同时也可以使得开发人员分别专注于不同的开发,美工只专注于视图的开发,程序员只专注于业务逻辑的实现。
2)程序的重用性高。
3.MVC模式用户的请求流程
4.项目的分层开发
在实际的项目开发中,我们通常使用要做到“高内聚,低耦合”那么要做到这一点,就必须使用分层开发,结合MVC设计进行项目开发的时候我们通常会分为控制器层-Service层-Dao层,三层开发,层与层之间通过接口来连接。
分层开发的示例图解如下图:
用户在浏览器中方法JSP页面进行操作的时候整个web应用使用分层开发的内部流程分为8步:
1)用户通过浏览器访问jsp页面也就是view层,在jsp上的所有操作都直接请求控制层
Servlet来完成。
2)控制层获取view层提交过来的参数通过JavaBean对象封装参数,然后将封装好的参数 传递到Model层中的Service中调用Service层进行数据的业务逻辑处理。
3)Service层将控制层传递过来的参数传递到Dao层,然后调用Dao层访问数据库。
4)Dao层根据Service层的参数需求来访问数据库。
5)数据库根据Dao层的操作将数据集返回Dao层。
6)Dao层将获得的数据通过JavaBean对象进行封装,然后将封装好的数据返回给Service 层。
7)Service层将Dao中返回的数据又返回给控制层。
8)控制层将得到的数据转发到对应的jsp页面给用户显示。
MVC开发模式详解的更多相关文章
- Extjs MVC开发模式详解
Extjs MVC开发模式详解 在JS的开发过程中,大规模的JS脚本难以组织和维护,这一直是困扰前端开发人员的头等问题.Extjs为了解决这种问题,在Extjs 4.x版本中引入了MVC开发模式, ...
- ext.js的mvc开发模式详解
ext.js的mvc开发模式详解和环境配置 在JS的开发过程中,大规模的JS脚本难以组织和维护,这一直是困扰前端开发人员的头等问题.Extjs为了解决这种问题,在Extjs 4.x版本中引入了MVC开 ...
- 03.Django的MTV开发模式详解和模型关系构建
ORM:对象关系映射 一:MTV开发模式把数据存取逻辑.业务逻辑和表现逻辑组合在一起的概念有时被称为软件架构的 Model-View-Controller(MVC)模式. 在这个模式中,Model 代 ...
- JAVA 23种开发模式详解(代码举例)
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- iOS中MVC等设计模式详解
iOS中MVC等设计模式详解 在iOS编程,利用设计模式可以大大提高你的开发效率,虽然在编写代码之初你需要花费较大时间把各种业务逻辑封装起来.(事实证明这是值得的!) 模型-视图-控制器(MVC)设计 ...
- MVC开发模式简述
了解MVC开发模式,首先我们要了解一下发展趋势 一.什么是软件设计 Jack W.Reeves 于14年前(1992年),就在其撰写的论文——<What is Software Design&g ...
- 《iOS 7 应用开发实战详解》
<iOS 7 应用开发实战详解> 基本信息 作者: 朱元波 管蕾 出版社:人民邮电出版社 ISBN:9787115343697 上架时间:2014-4-25 出版日期:2014 年5 ...
- 《Tomcat与Java Web开发技术详解》思维导图
越想构建上层建筑,就越觉得底层基础很重要.补课系列. 书是良心书,就是太基础了,正适合补课. [纯文字版] Tomcat与Java Web开发技术详解 Servlet Servlet的生命周期 初始化 ...
- 《python开发技术详解》|百度网盘免费下载|Python开发入门篇
<python开发技术详解>|百度网盘免费下载|Python开发入门篇 提取码:2sby 内容简介 Python是目前最流行的动态脚本语言之一.本书共27章,由浅入深.全面系统地介绍了利 ...
随机推荐
- linux 下Redis 5.0主从复制(一主二从)哨兵模式的搭建
文档结构如下: 一.环境说明: 作用 IP地址 端口 操作系统版本 安装目录 哨兵文件 主库 172.16.10.80 6379 Redhat 6.7 /redis5.0/redis-5.0.0 Se ...
- 使用IDEA 创建 MAVEN 项目
一,项目创建 1.File---New---project 选择maven 勾选Create from archtype,找到并选择org.apache.maven.archtype ...
- 编译libvlc。。。
https://wiki.videolan.org/Win32Compile按照官网教程,安装所需工具,参考 :http://qjw.qiujinwu.com/blog/2014/12/08/cros ...
- SparkSQL 与 Spark Core的关系
不多说,直接上干货! SparkSQL 与 Spark Core的关系 Spark SQL构建在Spark Core之上,专门用来处理结构化数据(不仅仅是SQL). Spark SQL在Spark C ...
- HTML5 CSS3面试题
一.CSS3有哪些新特性? 1. CSS3实现圆角(border-radius),阴影(box-shadow), 2. 对文字加特效(text-shadow.),线性渐变(gradient),旋转(t ...
- VC工程里,如何编译汇编语言的文件
最近老是有朋友问,VC工程里,如何编译汇编语言的文件,接下来就说一下步骤: 1.将汇编语言文件,加入到工程里: 2.在Solution Explorer窗口中右键单击Visual C++项目,选择Bu ...
- BarTender无法连接到数据库?原来是微软补丁包捣的鬼
近期有很多BarTender用户反映,在使用BarTender设计打印条码时,经常会出现错误消息6670 的提示,使得BarTender无法连接到数据库,究其原因,原来是微软补丁包捣的鬼.目前海鸥科技 ...
- MySQL---Day2
-- 转载:http://www.cnblogs.com/yuanchenqi/articles/6357507.html CREATE TABLE employee1( id TINYINT PRI ...
- 再次理解JS的prototype,__proto__和constructor
个人总结: 下面这篇文章很好的讲解了js原型,原型链,个人的总结是要记住这三个属性 prototype.__proto__和constructor 首先明确,js中一切都是对象object(A). ( ...
- JTree知识小点
创建一个新节点 DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("新节点"); 被选中的节点 Default ...