MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

MVC模式最早被Trygve Reenskaug提出,成为施乐帕罗奥多研究中心(Xerox PARC)的Smalltalk语言发明的一种软件设计模式。

MVC可对程序的后期维护和扩展提供了方便,并且使程序某些部分的重用提供了方便。而且MVC也使程序简化,更加直观。

需要注意的是MVC设计模式并不是java语言独有的设计模式,几乎所有的B/S结构的项目都在使用这种设计模式。其中M、V、C分别代表如下含义:

l M:model层,即模型层,用来维护数据以及提供数据访问方法;

l V:view层,即视图层,通常由jsp充当,用于展示模型的部分数据或所有数据的可视化视图;

l C:controller层,即控制层,用于对处理请求。

下面通过一张图来了解MVC设计模式,如图1-1所示:

图 1-1 MVC设计模式图

Javaweb的开发经历了JSP Model1、JSP Model1二代以及JSP Model2三个时期。下面我们分别介绍这三个时期。

1.JSP Model1第一代

JSP Model1是javaweb早期的设计模式,它适合小型web项目,开发成本低。Model1第一代时期,服务器端只有jsp页面,所有的操作都在jsp页面中,其中访问数据库的API是在jsp页面中完成的。也就是说,所有的东西都耦合在一起,这样对后期的维护和扩展极为不利。下面我们通过一张图来了解JSP Model1设计模式,如图1-2所示:

图1-2 JSP Model1设计模式

2.JSP Model1第二代

JSP Model1第二代有所改进,把业务逻辑的内容放到了JavaBean中,而JSP页面负责显示以及请求调度的工作。虽然第二代比第一代好了些,但还让JSP做了过多的工作,在JSP中将视图工作和请求调度(控制器)的工作耦合在一起了。下面我们通过一张图来了解JSP Model1第二代设计模式,如图1-3所示:

图1-3 JSP Model1第二代设计模式

3.JSP Model2

JSP Model2模式已经可以清晰的看到MVC完整的结构了,在JSP Model2中层次划分的很清晰,如下所示:

l JSP:视图层,用来与用户打交道,负责接收用来的数据,以及显示数据给用户;

l Servlet:控制层,负责找到合适的模型对象来处理业务逻辑,转发到合适的视图;

l JavaBean:模型层,完成具体的业务工作,例如:开启、转账等。

JSP Model2适合多人合作开发大型的Web项目,各司其职,互不干涉,有利于开发中的分工,有利于组件的重用。但是,Web项目的开发难度也随之加大,同时对开发人员的技术要求也有所提高。

下面通过一张图来了解JSP Model2设计模式,如图1-4所示:

图1-4 JSP Model2设计模式

本文版权归传智播客JavaEE学院所有,欢迎转载,转载请注明作者出处。谢谢!

作者:传智播客JavaEE培训学院

java mvc设计模式_JavaEE知识点:MVC设计模式相关推荐

  1. javaee 设计模式_JavaEE重新审视设计模式:装饰器

    javaee 设计模式 去年的这个时候,我写了一系列有关JavaEE设计模式实现的博客文章. 大约一年后,我意识到我错过了我最喜欢的图案装饰器. 装饰器模式基本上是通过装饰其他对象来扩展对象功能的方法 ...

  2. Java设计模式总汇二---MVC、中介者设计模式

    PS:上一篇我介绍了适配器设计模式.单例设计模式.静态代理设计模式.简单工厂设计模式,如果没有看过第一篇的小火鸡可以点这个看看http://www.cnblogs.com/cmusketeer/p/8 ...

  3. 23种设计模式分类+SOLID设计原则+从设计模式角度看MVC框架

    目的:设计模式旨在帮助使用者设计可维护.可扩展.可复用.灵活性好的系统 1.  23中设计模式分类 1.1 创建型模式(5个) 工厂方法模式(Factory Method) 抽象工厂模式 (Abstr ...

  4. Java八股——异常、网络、设计模式

    目录 异常 74. throw 和 throws 的区别? 75. final.finally.finalize 有什么区别? 76. try-catch-finally 中哪个部分可以省略? 77. ...

  5. 对于java程序语言的单例设计模式讲解

    1.设计模式:解决某一类问题最行之有效的方法.(java中有23种通用设计模式) 单例设计模式:解决一个类在内存中只存在一个对象. 2.单例设计模式有两种方式: 1)饿汉式 先初始化对象.当类一进内存 ...

  6. Java Web系列:Spring MVC基础

    1.Web MVC基础 MVC的本质是表现层模式,我们以视图模型为中心,将视图和控制器分离出来.就如同分层模式一样,我们以业务逻辑为中心,把表现层和数据访问层代码分离出来是一样的方法.框架只能在技术层 ...

  7. java之spring mvc之初始spring mvc

    1. mvc : mvc框架是处理 http请求和响应的框架 2. mvc 做的事情有哪些: 将 url 映射到一个java的处理方法上 将表单数据提交到 java 类中 将后台 java 类处理的结 ...

  8. java基础(六)多线程/设计模式

    这辈子没办法做太多事情,所以每一件都要做到精彩绝伦! People can't do too many things in my life,so everything will be wonderfu ...

  9. 【Java架构师面试题】设计模式面试专题(共35题含答案)

    设计模式(DesignPattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路.它不是语法规定,而是一套用来提高代码可复用性.可维护性.可读性.稳健性以及安全性的解决方案. 本篇为设计 ...

最新文章

  1. java arraylist json_java Arraylist转json 对象转json
  2. 嘿!我用python帮我干这些事
  3. MySQL行转列完整SQL示例
  4. 图网络中的社群及社群发现算法
  5. java产生字符函数_java生成字符串md5函数类(javaSE)
  6. 27 Python - 数值 日期与时间
  7. 互联网公司端午节礼盒歧视指南
  8. 一个.NET通用JSON解析/构建类的实现(c#)
  9. Go语言实战--学习笔记--runner
  10. Python tkinter教程-04:输入框
  11. 微信小程序 — — 实现微信公众号留言功能(附前、后端源码)
  12. 使用python、java语言批量下载抖音中我的视频、我喜欢的视频,解析抖音视频,批量下载抖音...
  13. qt在表格中如何画线_Qt如何在表格中显示和编辑数据
  14. SonarQube的安装部署过程中踩过的坑
  15. iOS逆向开发,突破微信强制升级,让低版本的iPhone也能正常使用
  16. c#代码转python代码工具_Python至C#代码转换
  17. (算法练习)求π的近似值
  18. Ubuntu 16.04中安装OpenCV 2.4.11
  19. 【分布式】白话理解CAP与Kafka
  20. FFT快速傅里叶变换详解

热门文章

  1. python excel 库 知乎_超全整理|Python 操作 Excel 库 xlwings 常用操作详解!
  2. uniapp前端循环数组取值方法
  3. 华为单臂路由配置实例
  4. 草图大师Sketchup打不开3d模型库怎么办
  5. 旺季翻盘看这里!揭秘2020亚马逊黑五网一营销爆火新玩法!
  6. BM弃坑EOS:江山易改,本性难移
  7. 废旧Android手机如何改造成Linux服务器?
  8. 农产品果蔬商城交易系统(Java+Web+MySQL)
  9. 用 Electron 打造 Win/Mac 应用,从「代码」到可下载的「安装包」,可能比你想得麻烦一点
  10. vscode标签插件bookmarks