一. 传统Model1和Model2

Model1:整个web应用几乎全部用JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接作出响应。用少量的javaBean来处理数据库链接,数据库访问等操作

实现比较简单,适用于快速开发小规模项目。JSP页面身兼View和Controller两种角色,将控制逻辑和表现逻辑混杂在一起,从而导致代码的重用性非常低,增加了应用扩展和维护的难度。

Model2: 基于MVC架构的设计模式,Servlet作为前端控制器,负责接收客户端发出的请求。在Servlet中只包含控制逻辑和简单的前端逻辑。然后,调用后端javaBean来完成实际的逻辑处理;最后,将其转发到相应的JSP页面来处理显示逻辑。

JSP不再承担控制器责任,它仅仅是表现层角色,仅仅用于将结果呈现给用户。JSP页面的请求与Servlet交互,而Servlet负责与后台的javaBean通信。

M(Model)————javaBean

V(View)————JSP

C(Controller)————Servlet

具有组件化的特点,更适用于大规模应用的开发,但也增加了应用开发的复杂程度。原本需要一个简单的JSP页面就能实现的应用,在Model2中被分解成多个协同工作的部分。

从某种程度上讲,Model2为了降低系统后期维护的复杂度,而导致前端开发的高复杂度。

二. MVC思想及其优势

MVC是所有面向对象程序设计语言都应该遵守的规范

三个基本部分:Model(模型),View(视图),Controller(控制器),这三个部分以最少的耦合协同工作,从而提高应用的可扩展性和可维护性。

特点:

               多个视图可以对应一个模型,可以减少代码的复制及代码的维护量 。一旦模型发生变化,也易于维护

               模型返回的数据和显示逻辑分离,模型数据可以应用任何的显示技术(JSP页面,Velocity模板,Excel文档等)

                应用被分为三层,降低了各层之间的耦合,提供了应用的可扩展性

               控制层的概念也很有效,把不同的模型和视图组合在一起,完成不同的请求,包含用户请求权限的概念

               MVC更符合软件工程化管理的精神。不同的层各司其职,每一层的组件具有相同的特征,通过工程化和工具化的方法产生管理程序代码

早期的MVC思想:对于一个普通应用程序,将视图注册给模型,当模型数据发生改变时,即时通知视图页面发送改变

Web模式下的MVC思想:即使将多个JSP页面注册给一个模型,但当模型发生变化时,模型也无法主动给JSP页面发送消息(因为Web应用都是基于请求/响应模式的),只有当用户请求浏览该页面时,控制器才负责调用模型数据来更新JSP页面。

注解:

1.JavaBean:Java语言欠缺属性、事件、多重继承功能。所以,如果要在Java程序中实现一些面向对象编程的常见需求,只能手写大量胶水代码。Java

Bean正是编写这套胶水代码的惯用模式或约定。这些约定包括getXxx、setXxx、isXxx、addXxxListener、XxxEvent等。遵守上述约定的类可以用于若干工具或库。

2.耦合和内聚介绍:耦合性是编程中的一个判断代码模块构成质量的属性,不影响已有功能,但影响未来拓展,与之对应的是内聚性。

耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。

内聚性:又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。

因此,现代程序讲究高内聚低耦合,即将功能内聚在同一模块,模块与模块间尽可能独立,互相依赖低。没有绝对没有耦合的模块组,只有尽量降低互相之间的影响。使模块越独立越好。

MVC思想概述的更多相关文章

  1. 简洁的MVC思想框架——Nancy(环境配置与Get操作)

    Nancy官网——https://github.com/NancyFx/Nancy 概述:Nancy是一个开源的Web轻型框架内核符合MVC思想,有开发方便,路由简单的特点,而且功能齐全 起步:Hel ...

  2. [MVCSharp]MVC# Overview概述

    MVC# Overview概述 Abstract: This article gives an overview of MVC# - a Model-View-Presenter framework ...

  3. java web mvc思想介绍

    1.首先简介一下什么是MVC思想. 在百度百科里面对MVC的说明,MVC全名是Model View Controller.是模型(model)-视图(view)-控制器(controller)的缩写. ...

  4. MVC思想架构的简单自定义UITableViewCell

         在iOS的开发过程中,架构思想是很重要的一部分,目前的主流应该分为MVC与MVVM两种,在这里不做过多的区分,有兴趣的同学可以看看唐巧大神的一篇文章<被误解的MVC和被神化的MVVM& ...

  5. 06-03 Java 面向对象思想概述、开发设计特征,类和对象的定义使用,对象内存图

    面向对象思想概述.开发设计特征 1:面向对象思想 面向对象是基于面向过程的编程思想. 面向过程:强调的是每一个功能的步骤 面向对象:强调的是对象,然后由对象去调用功能 2:面向对象的思想特点 A:是一 ...

  6. iOS彩票项目--第六天,运用MVC思想搭建设置界面(非storyboard方法)

    一.我只想说封装的思想很重要,MVC的思想也很重要,利用MVC思想搭建一下的界面 先说显示出来的cell,有三种(图中的两种,还有一种是最普通的,没有图片的),这种显示不同的cell,交给模型来处理, ...

  7. angularJS中的MVC思想?

    mvc 思想: 将应用程序的组成,划分为三个部分:model , controller 和 view ; - 控制器的作用是用来初始化模型用的: - 模型就是用于存储数据的: - 视图是展示数据的: ...

  8. javaBean和mvc思想

    JavaBean,  咖啡豆. JavaBean是一种开发规范,可以说是一种技术. JavaBean就是一个普通的java类.只有符合以下规定才能称之为javabean: 1)必须提供无参数的构造方法 ...

  9. 全局变量变为局部变量 & MVC思想

    1 函数中的全局变量如何变成局部变量? 全局变量之间会相互骚扰.所以在代码中不要用全局变量.ES6之前只有函数里面有全局变量. 全局变成局部变量怎么变? 把代-放在一个函数如中,再.call()执行一 ...

随机推荐

  1. Python中的数据类型以及他们的方法

    数据类型: 1)int i = 100 print(i.bit_length()) ''' bit_length 1 0000 0001 1 2 0000 0010 2 3 0000 0011 2 2 ...

  2. Vue 环境搭建之Hello World

    建 目录 webpack-vuedemo1 安装依赖组件 : 初始化 npm init npm install --save vue npm install --save-dev babel-core ...

  3. python网络数据采集(伴奏曲)

    这里是前章,我们做一下预备.之前太多事情没能写博客~..             (此博客只适合python3x,python2x请自行更改代码) 首先你要有bs4模块 windows下安装:pip3 ...

  4. 2017"百度之星"程序设计大赛 - 复赛1005&&HDU 6148 Valley Numer【数位dp】

    Valley Numer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  5. [51nod1709]复杂度分析

    给出一棵n个点的树(以1号点为根),定义dep[i]为点i到根路径上点的个数.众所周知,树上最近公共祖先问题可以用倍增算法解决.现在我们需要算出这个算法精确的复杂度.我们定义计算点i和点j最近公共组先 ...

  6. [51nod1597]有限背包计数问题

    你有一个大小为n的背包,你有n种物品,第i种物品的大小为i,且有i个,求装满这个背包的方案数有多少 两种方案不同当且仅当存在至少一个数i满足第i种物品使用的数量不同 Input 第一行一个正整数n 1 ...

  7. RabbitMQ 使用demo

    1.新建一个控制台应用程序:如图 2.代码如下: using RabbitMQ.Client;using RabbitMQ.Client.Events;using System;using Syste ...

  8. Linux-vmware tools安装与cdrom挂载(转)

    昨天想直接复制虚拟机centos系统中命令行的内容到主机的txt文档上进行保存,发现不能实现虚拟机与主机之间的直接通讯,后来查资料发现原来是由于我的虚拟机没有安装vwmare tools的缘故. 一个 ...

  9. JS URI Encode

    javascript中存在几种对URL字符串进行编码的方法:escape/encodeURI/encodeURIComponent.这几种编码所起的作用各不相同. escape 采用ISO Latin ...

  10. 正则API

    正则表达式:规定字符串中字符出现规律的公式 如果备选字符列表中个别字符之间是连续的,可用-省略中间的字符.比如: 匹配1位数字:   [0-9]匹配1位小写字母 : [a-z] 匹配1位大写字母 : ...