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

    import json # json反序列化 # json_str = '{"name":"qiyue","age":18}' # stud ...

  2. word 2007 文档中添加文件

    1. "插入"->"对象",出现的下拉框中选择"对象" 2.弹出界面 3.切换至"由文件创建",点击"浏 ...

  3. POJ 2443:Set Operation 经典位运算好题

    Set Operation Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 2965   Accepted: 1196 Des ...

  4. 调用servlet报The requested resource is not available.

    调用servlet的时候经常有这种报错,一般来说我直到现在遇到的情况大致有以下几类: 1.参数写错了 在新创建的servlet文件中有这么一行代码,“/LoginCheck”这个一定要和form表单中 ...

  5. 一个PHP的SQL注入完整过程

    本篇文章介绍的内容是一个PHP的SQL注入完整过程,现在分享给大家,有需要的朋友可以参考一下 希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里 ...

  6. js 月份选择器(只选择到月)

    需要如下js https://pan.baidu.com/s/1c1T9wY0 在html中添加如下代码 <input onclick="setmonth(this)" /& ...

  7. 标准JAVA工程结构

  8. mybatis的一对多和多对一的连接查询

    实体类: package com.entity; import java.util.List; public class Dept { private Integer deptId; private ...

  9. ArchLinux安装(BIOS)

    ArchLinux安装(BIOS) 说在前头:在经历过无数次的失败尝试过后总结出的可用的安装过程(比官方的简单一点) 官方安装指导 一.连接网络 1.连接 # wifi-menu 2.检查是否联通 ( ...

  10. promise核心6 自定义promise

    1.定义整体结构(不写实现) 定义一个自己的promise的库 lib(库的简写) 一个js文件.一个js模块(不能用es6  也不能commjs)(用es5模块语法 ) 匿名函数自调用.IIFE ( ...