随着应用系统的逐渐增大,系统的业务逻辑复杂度是以几何的方式增长,在这种情况下,如果依然把所有的业务逻辑都放在JSP页面中,那将成为一场恶梦。

  MVC思想将应用中各个组件按照功能来进行分类,不同的组将使用不同的技术来担当,甚至推荐了严格分层,不同的组件被严格的分层在所在的层内,各层之间是以松耦合的方法来组织在一起,从而提供了良好的封装。

1.传统的Model 1和Model 2

  JavaWeb经历了Model 1和Model 2两个阶段:

  Model 1模式下,整个Web应用几乎全部是由JSP页面来组成的,JSP页面除了接受用户端的请求,还要对请求处理后直接做出相应,用少量的JavaBean来处理数据库的连接,和数据库的访问。该模式的局限性非常明显:JSP页面身兼View和Controller两种角色,将控制逻辑和视图逻辑杂在一起,从而导致了代码的复用率非常低,增加了应用的扩展性和维护的难度。

  Model 2已经是基于MVC架构的设计模式,在Model 2中,Servlet作为前端控制器,负责接受客户端的请求,在Servlet中只包含了逻辑控制和简单的前端控制;然后,调用JavaBean来完成实际的逻辑处理;最后,转发到相应的JSP页面显示逻辑

                    Model2的流程

  在Model2的模式下,JSP不再承担控制器的责任,它仅仅是表现层的角色,仅仅用于将结果呈现给用户,JSP页面的请求与Servlet(控制器)交互,而Servlet是负责与后台的JavaBean通信。在Model2的模式下,模型(model)由JavaBean来充当,视图(view)由JSP来充当,而控制器(Controller)是由Servlet来充当。

  对于非常小型的Web站点,如果后期的更新,维护工作不是特别的大,可以使用model1的模式来开发应用,而不是使用Model2的模式,虽然Model2提供了更好的可展性及可维护性,但是增加了前期的开发成本,从某种程度上来讲,Model2 为了降低后期的维护的复杂度,却导致了前期开发的更高的复杂度。

2.MVC思想及其优势

  MVC的思想不是Java语言特有的思想,也并不是Web应用所特有的思想,而是所有面向对象程序设计语言都应该遵循的规范。

  MVC思想将一个应用分为三个基本部分:Model,View,Controller,这三个部分以最少的耦合协同工作,从而提高应用的扩展性及可维护性。

  在经典的MVC模式中,事件是由控制器来处理,控制器根据事件的类型改变模式或者视图,反之亦然,具体的说,每个模型对应一系列的视图列表,这种对应关系通常是由注册来完成,既:把多个视图注册到同一个模型,当模型发生改变时,模型向所有注册的视图发起通知,接下来,视图从对相应的模型中获取信息,然后完成视图的更新。

  经典的MVC模式和Web的MVC思想也存在一定的差别,引起差别的原因是因为Web应用是一种请求/响应模式下的应用,对于请求/响应的应用,如果用户不对应用发出请求,视图无法主动更新自己。

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

  1. java web mvc思想介绍

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

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

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

  3. MVC思想概述

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

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

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

  5. angularJS中的MVC思想?

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

  6. javaBean和mvc思想

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

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

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

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

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

  9. MVC思想

    MVC英文即Model-View-Controller,即把一个应用的输入.处理.输出流程按照Model.View.Controller的方式进行分离,这样一个应用被分成三个层--模型层.视图层.控制 ...

随机推荐

  1. Python实战案例:这是你见过的最详细的JS加密登录某博

    0x00 抓包分析 简单的搜索之后发现,很多参数都是登陆上面这个请求返回的值,这个请求在输入完账号光标到达密码框时就会生成! 0x01 加密逻辑分析 搜索su=可以很快找到加密的位置,上图看到e.su ...

  2. 十九、SAP查询所有数据库表的所有数据

    一.我们打款SAP自带的一个演示数据库SCARR 二.表结构如下 三.代码如下 四.执行结果如下 我们对比一下数据库的内容,很perfect 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微 ...

  3. 091-PHP数组过滤函数array_filter,过滤非整数

    <?php function not_int($x){ //定义过滤非整数的函数 if(is_int($x)) return TRUE; } $arr=array(1,2,'a',3,4,'c' ...

  4. 065-PHP函数中声明全局变量

    <?php function test(){ //定义函数 global $a; //声明全局变量 $a=7; echo "函数内: ".$a . "<br& ...

  5. FindWindowXG

    测试: 函数代码: function FindWindowXG(strClass, strTitle: string): THandle; var hd: THandle; arrClass: ..] ...

  6. 基于Ambari Server部署HDP集群实战案例

    基于Ambari Server部署HDP集群实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.部署Ambari Server端 博主推荐阅读: https://www.c ...

  7. 部署Ambari Server实战案例

    部署Ambari Server实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备三台虚拟机(需要自行安装jdk环境) 1>.角色分配 NameNode节点: h ...

  8. windows Driver 查询指定键值

    NTSTATUS status; HANDLE hKey = NULL; OBJECT_ATTRIBUTES oa; UNICODE_STRING strPath = RTL_CONSTANT_STR ...

  9. 洛谷 P1435 回文字串

    题目传送门 解题思路: 就是求一个字符串的最长回文子序列的长度,然后用整个的长度减去最长回文子序列的长度 AC代码: #include<iostream> #include<cstd ...

  10. ios 进阶技术点

    1.Runtime的消息转发机制 消息转发机制基本上分为三个步骤: 1. 动态方法解析 2. 备用接收者 3. 完整转发 2.Runloop的工作原理 runloop.autorelease pool ...