MVC思想概叙
随着应用系统的逐渐增大,系统的业务逻辑复杂度是以几何的方式增长,在这种情况下,如果依然把所有的业务逻辑都放在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思想概叙的更多相关文章
- java web mvc思想介绍
1.首先简介一下什么是MVC思想. 在百度百科里面对MVC的说明,MVC全名是Model View Controller.是模型(model)-视图(view)-控制器(controller)的缩写. ...
- MVC思想架构的简单自定义UITableViewCell
在iOS的开发过程中,架构思想是很重要的一部分,目前的主流应该分为MVC与MVVM两种,在这里不做过多的区分,有兴趣的同学可以看看唐巧大神的一篇文章<被误解的MVC和被神化的MVVM& ...
- MVC思想概述
一. 传统Model1和Model2 Model1:整个web应用几乎全部用JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接作出响应.用少量的javaBean来处理数据库链接,数据库访问 ...
- iOS彩票项目--第六天,运用MVC思想搭建设置界面(非storyboard方法)
一.我只想说封装的思想很重要,MVC的思想也很重要,利用MVC思想搭建一下的界面 先说显示出来的cell,有三种(图中的两种,还有一种是最普通的,没有图片的),这种显示不同的cell,交给模型来处理, ...
- angularJS中的MVC思想?
mvc 思想: 将应用程序的组成,划分为三个部分:model , controller 和 view ; - 控制器的作用是用来初始化模型用的: - 模型就是用于存储数据的: - 视图是展示数据的: ...
- javaBean和mvc思想
JavaBean, 咖啡豆. JavaBean是一种开发规范,可以说是一种技术. JavaBean就是一个普通的java类.只有符合以下规定才能称之为javabean: 1)必须提供无参数的构造方法 ...
- 全局变量变为局部变量 & MVC思想
1 函数中的全局变量如何变成局部变量? 全局变量之间会相互骚扰.所以在代码中不要用全局变量.ES6之前只有函数里面有全局变量. 全局变成局部变量怎么变? 把代-放在一个函数如中,再.call()执行一 ...
- 简洁的MVC思想框架——Nancy(环境配置与Get操作)
Nancy官网——https://github.com/NancyFx/Nancy 概述:Nancy是一个开源的Web轻型框架内核符合MVC思想,有开发方便,路由简单的特点,而且功能齐全 起步:Hel ...
- MVC思想
MVC英文即Model-View-Controller,即把一个应用的输入.处理.输出流程按照Model.View.Controller的方式进行分离,这样一个应用被分成三个层--模型层.视图层.控制 ...
随机推荐
- (转)Navicat Premium 连接Oracle 数据库(图文教程)
Navicat premium是一款数据库管理工具,是一个可多重连线资料库的管理工具,它可以让你以单一程式同时连线到MySQL.SQLite.Oracle及PostgreSQL 资料库,让管理不同类型 ...
- 如何创建一个Asp .Net Web Api项目
1.点击文件=>新建=>项目 2.创建一个Asp .NET Web项目 3.选择Empty,然后选中下面的MVC和Web Api,也可以直接选择Web Api选项,注意将身份验证设置为无身 ...
- 十五、SAP自定义结构体
一.SAP的结构体是以BEGIN OF开始,以END OF结尾,代码如下: 二.输出结果如下
- mp4流化
MP4需要流化 不然会频繁seek 对于http形式的播放而言 苦不堪言 ffmpeg -i g:/media/err.mp4 -movflags +faststart -codec copy g:/ ...
- jar类库加载顺序
当我们启动一个tomcat的服务的时候,jar包和claess文件加载顺序: 1. $java_home/lib 目录下的java核心api 2. $java_home/lib/ext 目录下的jav ...
- java反射的认知和学习
1.学习了Class对象,Filed对象(对应数据),Method对像(对应函数),Constructor对象(对应构造函数). 2.Declared可用于获取私有的数据和方法,但是打印得使用setA ...
- 每天一点点之vue框架开发 - vue组件之间传值(父向子传值)
路由文件 { path: '/productListBase', name: 'productListLink', component: ProductListBase, redirect: '/pr ...
- POJ 3627:Bookshelf
Bookshelf Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7758 Accepted: 3906 Descrip ...
- h5-伸缩布局-小案例
1.伸缩布局案例1-基本页面布局 1.1.html <div class="layout"> <header></header> <mai ...
- cf 760B.Frodo and pillows
二分,判断条件就是最小情况(设当前k位取x)比剩余值(m-x)要小.(貌似又做麻烦了2333) #include<bits/stdc++.h> #define LL long long # ...