浅谈javaweb三大框架和MVC设计模式
浅谈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设计模式相关推荐
- 浅谈前端三大框架和vue2、vue3的选择
文章目录 认识三大框架 三大框架选择 Vue2和Vue3的选择 认识三大框架 学习vue框架之前, 我们先了解一下前端的三大框架 以及三大框架中vue在国内所处的地位 目前前端最流行的是三大框架:Vu ...
- 浅谈以太坊智能合约的设计模式与升级方法
浅谈以太坊智能合约的设计模式与升级方法 1. 最佳实践 2. 实用设计案例 2.1 控制器合约与数据合约: 1->1 2.2 控制器合约与数据合约: 1->N 2.3 控制器合约与数据合约 ...
- 浅谈在线并行计算框架
浅谈在线并行计算框架 文章目录 浅谈在线并行计算框架 1. 背景 2. 关键问题 2.1 链式处理 2.2 并行拆分 2.2.1 数据横向拆分 2.2.2 流水线并行 高内聚无副作用算子 图执行引擎 ...
- javaWeb三大框架总结
一.Struts2的总结 1.Struts 2的工作流程,从请求说起 (1)客户端浏览器发出HTTP请求. (2)根据web.xml配置,该请求被FilterDispatcher接收. (3)根据st ...
- 浅谈android网络框架——以课程格子的bug为例
大家好! 在使用课程格子过程中 ,发现如果网络断开,点击树洞秘密,课程格子会因为无法从网络上刷新数据而崩溃掉.今天借解决此bug的为例,浅谈android的网络框架.
- javaweb三大框架
1.Javaweb经历了三个时期 ①JSP Model1第一代 JSP Model1是JavaWeb早期的模型,它适合小型Web项目,开发成本低!Model1第一代时期,服务器端只有JSP页面,所有 ...
- 基于若依框架的二次开发_浅谈若依框架
何为框架?若依框架又是什么?具备什么功能? 框架的英文为Framework,带有骨骼,支架的含义.在软件工程中,框架往往被定义为整个或部分系统的可重用设计,是一个可重复使用的设计构件.类似于一个数学公 ...
- 浅谈ASP.NET框架
本篇文章更适合具有一定开发经验,一定功底,且对底层代码有所研究的朋友!!! 本篇文章稍微偏原理且底层,有一定难度和且比较晦涩,文章粒度稍微粗些,更细粒度的,会在后续的文章中,结合具体的Demo实 ...
- 浅谈自己理解的几种设计模式
1:单例模式 单例模式主要有3个特点,: 1.单例类确保自己只有一个实例. 2.单例类必须自己创建自己的实例. 3.单例类必须为其他对象提供唯一的实例. 单例模式也是一种比较常见的设计模式,它到底能带 ...
最新文章
- 聋哑六年级计算机课教学进度计划,小学六年级下册信息技术教学计划三篇
- Python学习笔记:异步IO(3)
- Matlab | matpower5.0:最优潮流执行步骤
- “短路求值(Short-Circuit Evaluation)
- 20181009-6 选题 Scrum立会报告+燃尽图 05
- ECMAScript 6 开篇准备
- 【java学习之路】(java框架)011.SpringMVC入门
- 具体数学-第8课(取整进阶)
- ToolTip特效 JavaScript 盗取厦门人才网的特效
- 本科毕业设计(论文)格式最详细总结
- php网页的制作,网页制作步骤是什么
- 输入一个n维矩阵,输出它的转置矩阵
- 原来,嵌入式BI方案的核心差异在这,教你如何评估
- 群晖服务器显示灯,【群晖 DS119j 单盘位NAS 网络存储服务器使用总结】功能|配置|机身|指示灯_摘要频道_什么值得买...
- 学习编程语言的第一步,认识什么是计算机!!!
- 3D全景+展馆,带来不一样的参观体验_华锐互动
- 自动加载的iframe高度自适应
- unity中AO、metallic、roughness贴图的使用方式
- 2018焦作ICPC E. Resistors in Parallel(打表+大数)
- 数据库开发转行大数据开发工程师怎么样?
热门文章
- arccatalog点要素显示不完_如果你读不完显示屏说明书,至少读完这几句话吧
- golang如何打印float64的整数部分_2020-08-10:如何不用加减乘除求浮点数的2倍值?...
- 安卓ps2模拟器_安卓PSP模拟器评测:合金装备 和平步行者
- 国内厂商对鸿蒙系统的态度,鸿蒙系统4月上线,国内手机厂商态度很关键!小米、中兴出乎意料...
- matlab内存溢出的解决方案
- iOS手势操作简介(四)
- Python之爬虫-段子网
- springMVC分析-2
- 编译安装 apache 2.4.6
- 跟着别人的感觉做网络推广之二