随着应用系统的逐渐增大,系统的业务逻辑复杂度是以几何的方式增长,在这种情况下,如果依然把所有的业务逻辑都放在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. javascript 创建私有变的三个方法

    //方法一 function m() { //这是私有变量 let p = 10; //这是私有方法 function pr() { return false; } //读取或者设置 私有变量和方法 ...

  2. java核心-多线程(1)-知识大纲

    Thread,整理一份多线程知识大纲,大写意 1.概念介绍 线程 进程 并发 2.基础知识介绍 Java线程类 Thread 静态方法&实例方法 Runnable Callable Futur ...

  3. 038-PHP向返回的闭包函数实例中,传递外部变量参数

    <?php # 向返回的闭包函数实例中,传递外部变量参数 # 直接调用将不会输出$txt的内容 function demo(){ $txt = '我爱PHP'; # 1.function()内的 ...

  4. 如何有效避免Essay写作抄袭

    每到学期末的时候,各种考试,论文以及作业数不胜数,压得留学党们快要喘不过气了.我想比起写论文,同学们更操心的问题应该是:Plagiarism.要知道在国外Plagiarism的这种行为在学术中是零容忍 ...

  5. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-share

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  6. 个人vim简单配置

    精简.vimrc配置,简约不简单 该配置没有花里胡哨的插件,只是用ctags和cscope然后配合vim提供的基础功能就可以完成常见的代码编辑,浏览,查找等工作. "************ ...

  7. Java工程师面试题

    1. J2EE 是什么?它包括哪些技术?解答:从整体上讲,J2EE 是使用 Java 技术开发企业级应用的工业标准,它是 Java 技术不断适应和促进企业级应用过程中的产物.适用于企业级应用的 J2E ...

  8. 14 ~ express ~ 显示用户数据

    一,router/admin.js var express = require('express') var router = express.Router() var User = require( ...

  9. Arduino - -- 串口双向通信

    需要用到Arduino UNO的串口双向通信功能,以下源码: int val; void setup() {   Serial.begin(9600); // opensserial port, se ...

  10. Angular 后台报错记录

    异常信息:ERROR TypeError: Cannot read property 'xxxx' of undefined 异常原因:"xxx"属性未定义,引发异常的原因可能是H ...