浅谈javaweb三大框架和MVC设计模式

转载自:http://blog.csdn.net/sunpeng19960715/article/details/50890705

小序:博主以前在学javaweb的时候开始总不理解javaweb三大框架和MVC框架模式,虽然没有把两者混为一谈,但是也是很晕菜。作为一个Java开发程序员的话,特别是B/S架构的开发来说,MVC框架模式是我们必须要掌握的!!!

一、MVC设计模式

1.MVC的概念

首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),即为MVC。它是一种软件设计的典范,最早为Trygve Reenskaug提出,为施乐帕罗奥多研究中心(Xerox PARC)的Smalltalk语言发明的一种软件设计模式。

2.MVC的详解

虽然MVC并不是Java当中独有的,但是现在几乎所有的B/S的架构都采用了MVC框架模式,但是MVC在B/S架构中并没有完全地实现,其实我们根本不需要掌握未实现的部分。
·控制器Controller:控制器即是控制请求的处理逻辑,对请求进行处理,负责请 求转发;
·视图View:视图即是用户看到并与之交互的界面,比如HTML(静态资源),JSP(动态资源)等等。
·模型Model:模型代表着一种企业规范,就是业务流程/状态的处理以及业务规则的规定。业务流程的处理过程对其他层来说是不透明的,模型接受视图数据的请求,并返回最终的处理结果。业务模型的设计可以说是MVC的核心。

3.MVC模式的用武之地

MVC模式被广泛用于Java的各种框架中,比如Struts2、spring MVC等等都用到了这种思想。

Struts2是基于MVC的轻量级的web应用框架。基于MVC,说明基于Struts2开发的Web应用自然就能实现MVC,也说明Struts2着力于在MVC的各个部分为我们的开发提供相应帮助。

二、Javaweb经典三层架构

1.Javaweb经历了三个时期

①JSP Model1第一代
JSP Model1是JavaWeb早期的模型,它适合小型Web项目,开发成本低!Model1第一代时期,服务器端只有JSP页面,所有的操作都在JSP页面中,连访问数据库的API也在JSP页面中完成。也就是说,所有的东西都耦合在一起,对后期的维护和扩展极为不利。

②JSP Model1第二代
JSP Model1第二代有所改进,把业务逻辑的内容放到了JavaBean中,而JSP页面负责显示以及请求调度的工作。虽然第二代比第一代好了些,但还让JSP做了过多的工作,JSP中把视图工作和请求调度(控制器)的工作耦合在一起了。

③JSP Model2
JSP Model2模式已经可以清晰的看到MVC完整的结构了。
·JSP:视图层,用来与用户打交道。负责接收用来的数据,以及显示数据给用户;
·Servlet:控制层,负责找到合适的模型对象来处理业务逻辑,转发到合适的视图;
JavaBean:模型层,完成具体的业务工作,例如:开启、转账等。

这就是javaweb经历的三个年代,JSP Model2适合多人合作开发大型的Web项目,各司其职,互不干涉,有利于开发中的分工,有利于组件的重用。但是,Web项目的开发难度加大,同时对开发人员的技术要求也提高了。

2.JavaWeb经典三层框架

我们常说的三层框架是由JavaWeb提出的,也就是说这是JavaWeb独有的!
所谓三层是表述层(WEB层)、业务逻辑层(Business Logic),以及数据访问层(Data Access)。
·WEB层:包含JSP和Servlet等与WEB相关的内容;
·业务层:业务层中不包含JavaWeb API,它只关心业务逻辑;
·数据层:封装了对数据库的访问细节;

  注意,在业务层中不能出现JavaWeb API,例如request、response等。也就是说,业务层代码是可重用的,甚至可以应用到非Web环境中。业务层的每个方法可以理解成一个万能,例如转账业务方法。业务层依赖数据层,而Web层依赖业务层!

注:网上很多人在讨论MVC究竟是一种框架模式还是一种设计模式(百度百科中强行解释其为一种框架模式而不是一种设计模式),虽然Java中的23种设计模式里并没有MVC,但是我认为讨论这个问题没有太大的必要。我们大可将他作为一种思想,我们需要做的仅仅是理解它,应用它,掌握其中的思想,这才是我们需要做的。

浅谈javaweb三大框架和MVC设计模式相关推荐

  1. 浅谈前端三大框架和vue2、vue3的选择

    文章目录 认识三大框架 三大框架选择 Vue2和Vue3的选择 认识三大框架 学习vue框架之前, 我们先了解一下前端的三大框架 以及三大框架中vue在国内所处的地位 目前前端最流行的是三大框架:Vu ...

  2. 浅谈以太坊智能合约的设计模式与升级方法

    浅谈以太坊智能合约的设计模式与升级方法 1. 最佳实践 2. 实用设计案例 2.1 控制器合约与数据合约: 1->1 2.2 控制器合约与数据合约: 1->N 2.3 控制器合约与数据合约 ...

  3. 浅谈在线并行计算框架

    浅谈在线并行计算框架 文章目录 浅谈在线并行计算框架 1. 背景 2. 关键问题 2.1 链式处理 2.2 并行拆分 2.2.1 数据横向拆分 2.2.2 流水线并行 高内聚无副作用算子 图执行引擎 ...

  4. javaWeb三大框架总结

    一.Struts2的总结 1.Struts 2的工作流程,从请求说起 (1)客户端浏览器发出HTTP请求. (2)根据web.xml配置,该请求被FilterDispatcher接收. (3)根据st ...

  5. 浅谈android网络框架——以课程格子的bug为例

    大家好! 在使用课程格子过程中 ,发现如果网络断开,点击树洞秘密,课程格子会因为无法从网络上刷新数据而崩溃掉.今天借解决此bug的为例,浅谈android的网络框架.

  6. javaweb三大框架

    1.Javaweb经历了三个时期 ①JSP Model1第一代  JSP Model1是JavaWeb早期的模型,它适合小型Web项目,开发成本低!Model1第一代时期,服务器端只有JSP页面,所有 ...

  7. 基于若依框架的二次开发_浅谈若依框架

    何为框架?若依框架又是什么?具备什么功能? 框架的英文为Framework,带有骨骼,支架的含义.在软件工程中,框架往往被定义为整个或部分系统的可重用设计,是一个可重复使用的设计构件.类似于一个数学公 ...

  8. 浅谈ASP.NET框架

       本篇文章更适合具有一定开发经验,一定功底,且对底层代码有所研究的朋友!!! 本篇文章稍微偏原理且底层,有一定难度和且比较晦涩,文章粒度稍微粗些,更细粒度的,会在后续的文章中,结合具体的Demo实 ...

  9. 浅谈自己理解的几种设计模式

    1:单例模式 单例模式主要有3个特点,: 1.单例类确保自己只有一个实例. 2.单例类必须自己创建自己的实例. 3.单例类必须为其他对象提供唯一的实例. 单例模式也是一种比较常见的设计模式,它到底能带 ...

最新文章

  1. 聋哑六年级计算机课教学进度计划,小学六年级下册信息技术教学计划三篇
  2. Python学习笔记:异步IO(3)
  3. Matlab | matpower5.0:最优潮流执行步骤
  4. “短路求值(Short-Circuit Evaluation)
  5. 20181009-6 选题 Scrum立会报告+燃尽图 05
  6. ECMAScript 6 开篇准备
  7. 【java学习之路】(java框架)011.SpringMVC入门
  8. 具体数学-第8课(取整进阶)
  9. ToolTip特效 JavaScript 盗取厦门人才网的特效
  10. 本科毕业设计(论文)格式最详细总结
  11. php网页的制作,网页制作步骤是什么
  12. 输入一个n维矩阵,输出它的转置矩阵
  13. 原来,嵌入式BI方案的核心差异在这,教你如何评估
  14. 群晖服务器显示灯,【群晖 DS119j 单盘位NAS 网络存储服务器使用总结】功能|配置|机身|指示灯_摘要频道_什么值得买...
  15. 学习编程语言的第一步,认识什么是计算机!!!
  16. 3D全景+展馆,带来不一样的参观体验_华锐互动
  17. 自动加载的iframe高度自适应
  18. unity中AO、metallic、roughness贴图的使用方式
  19. 2018焦作ICPC E. Resistors in Parallel(打表+大数)
  20. 数据库开发转行大数据开发工程师怎么样?

热门文章

  1. arccatalog点要素显示不完_如果你读不完显示屏说明书,至少读完这几句话吧
  2. golang如何打印float64的整数部分_2020-08-10:如何不用加减乘除求浮点数的2倍值?...
  3. 安卓ps2模拟器_安卓PSP模拟器评测:合金装备 和平步行者
  4. 国内厂商对鸿蒙系统的态度,鸿蒙系统4月上线,国内手机厂商态度很关键!小米、中兴出乎意料...
  5. matlab内存溢出的解决方案
  6. iOS手势操作简介(四)
  7. Python之爬虫-段子网
  8. springMVC分析-2
  9. 编译安装 apache 2.4.6
  10. 跟着别人的感觉做网络推广之二