转自: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开发模式详解的更多相关文章

  1. Extjs MVC开发模式详解

    Extjs MVC开发模式详解   在JS的开发过程中,大规模的JS脚本难以组织和维护,这一直是困扰前端开发人员的头等问题.Extjs为了解决这种问题,在Extjs 4.x版本中引入了MVC开发模式, ...

  2. ext.js的mvc开发模式详解

    ext.js的mvc开发模式详解和环境配置 在JS的开发过程中,大规模的JS脚本难以组织和维护,这一直是困扰前端开发人员的头等问题.Extjs为了解决这种问题,在Extjs 4.x版本中引入了MVC开 ...

  3. 03.Django的MTV开发模式详解和模型关系构建

    ORM:对象关系映射 一:MTV开发模式把数据存取逻辑.业务逻辑和表现逻辑组合在一起的概念有时被称为软件架构的 Model-View-Controller(MVC)模式. 在这个模式中,Model 代 ...

  4. JAVA 23种开发模式详解(代码举例)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  5. iOS中MVC等设计模式详解

    iOS中MVC等设计模式详解 在iOS编程,利用设计模式可以大大提高你的开发效率,虽然在编写代码之初你需要花费较大时间把各种业务逻辑封装起来.(事实证明这是值得的!) 模型-视图-控制器(MVC)设计 ...

  6. MVC开发模式简述

    了解MVC开发模式,首先我们要了解一下发展趋势 一.什么是软件设计 Jack W.Reeves 于14年前(1992年),就在其撰写的论文——<What is Software Design&g ...

  7. 《iOS 7 应用开发实战详解》

    <iOS 7 应用开发实战详解> 基本信息 作者: 朱元波    管蕾 出版社:人民邮电出版社 ISBN:9787115343697 上架时间:2014-4-25 出版日期:2014 年5 ...

  8. 《Tomcat与Java Web开发技术详解》思维导图

    越想构建上层建筑,就越觉得底层基础很重要.补课系列. 书是良心书,就是太基础了,正适合补课. [纯文字版] Tomcat与Java Web开发技术详解 Servlet Servlet的生命周期 初始化 ...

  9. 《python开发技术详解》|百度网盘免费下载|Python开发入门篇

    <python开发技术详解>|百度网盘免费下载|Python开发入门篇 提取码:2sby  内容简介 Python是目前最流行的动态脚本语言之一.本书共27章,由浅入深.全面系统地介绍了利 ...

随机推荐

  1. 【转】详述iOS国际化

    原文网址:http://www.cocoachina.com/ios/20151120/14258.html 在真正将国际化实践前,只知道通过NSLocalizedString方法将相应语言的字符串加 ...

  2. 4.vim操作

    你想以最快的速度学习人类史上最好的文本编辑器VIM吗?你先得懂得如何在VIM幸存下来,然后一点一点地学习各种戏法. 我建议下面这四个步骤: 存活 感觉良好 觉得更好,更强,更快 使用VIM的超能力 当 ...

  3. .NET Core 开发:永远的Hello Word

    从.NET Core发布到现在已经很长一段时间了,园子里的各路大神也和它打的火热,本着与时俱进,啥火学啥的原则,我也开始了我的.NET Core学习之旅. 简介 .NET从2002年发行到现在,从呱呱 ...

  4. WIN7把任务栏的的蓝牙图标误删了找回方法

    当时我删了以后,在网上找方法,都说—— 点击任务栏下面的三角箭头,选择自定义,里面有蓝牙图标选项,选择显示图标和通知. 可是我发现我的自定义选项里面就没有蓝牙图标选项啊... 故事的最后,我终于找到了 ...

  5. 手机、电脑、安卓、iOS、微信浏览器判断

    微信浏览器判断: // true为微信浏览器function is_weixin() { var ua = window.navigator.userAgent.toLowerCase(); if ( ...

  6. 自动化框架的两种断言设计(pytest 版)

    自动化测试断言失败时,根据不同业务场景,可能需要立即终止或继续执行.这里以 Appium + pytest 为例. 一. 断言失败立即终止 用途一:用例的预期结果是其他用例的前提条件时,assert ...

  7. Core Graphics框架 利用Quartz 2D绘图

    首先,什么是Core Graphics和Quartz 2D? Core Graphics:是基于Quartz 2D绘图引擎的一个C语言的API绘图框架.它也是iOS开发中最基本的框架(Framewor ...

  8. GCD与dispatch_group总结

    GCD 可以看作是集合类的操作: 集合是queue,元素是block: 集合只能添加对象,删除对象由系统完成. 同理,NSOperationQueue也可以看作是一个集合管理器. dispatch_g ...

  9. Python 进行网络编程

    Date: 2019-06-10 Author: Sun 1. Python TCP通信实现 socket()函数 Python 中,我们用 socket()函数来创建套接字,语法格式如下: sock ...

  10. JDBC程序实例

    实例 ( Statement ): public class JDBC { public static void main(String[] args) throws Exception { Conn ...