- 浏览: 61246 次
- 性别:
- 来自: 广州
文章分类
最新评论
以下内容摘自《程序天下:Struts2技术详解(实例版):基于WebWork核心的MVC开发与实践》 第1章
1.1.2 MVC设计模式
MVC是Model-View-Controller的简称,即模型-视图-控制器。MVC是Xerox PARC在20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用。
MVC把应用程序分成3个核心模块:模型(Model)、视图(View)和控制器(Controller),它们分别担当不同的任务。如图1.2所示显示了这几个模块各自的功能及它们的相互关系。
图1.2 MVC结构图
视图:视图是用户看到并与之交互的界面。视图向用户展示用户感兴趣的业务数据,并能接收用户的输入数据,但是视图并不进行任何实际的业务处理。视图可以向模型查询业务数据,但不能直接改变模型中的业务数据。视图还能接收模型发出的业务数据更新事件,从而对用户界面进行同步更新。
模型:模型是应用程序的主体部分。模型表示业务数据和业务逻辑。一个模型能为多个视图提供业务数据。同一个模型可以被多个视图重用。
控制器:控制器接收用户的输入并调用模型和视图去完成用户的请求。当用户在视图上选择按钮或菜单时,控制器接收请求并调用相应的模型组件去处理请求,然后调用相应的视图来显示模型返回的数据。
如图1.3所示,MVC的3个模块也可以视为软件的3个层次,最上层为视图层,中间为控制器层,下层为模型层。总的说来,层与层之间为自上而下的依赖关系,下层组件为上层组件提供服务。视图层与控制器层依赖模型层来处理业务逻辑和提供业务数据。此外,层与层之间还存在两处自下而上的调用,一处是控制器层调用视图层来显示业务数据,另一处是模型层通知客户层同步刷新界面。为了提高每个层的独立性,应该使每个层对外公开接口,封装实现细节。
图1.3 MVC三个模块同软件三层的关系
★ 说明 ★
MVC设计模式是目前最流行的Web应用设计模式,给项目代码的管理和维护带来了很大的便利。
1.1.3 MVC的处理过程
如图1.4所示,用户在视图提供的界面上发出请求,视图把请求转发给控制器,控制器调用相应的模型来处理用户请求,模型进行相应的业务逻辑处理,并返回数据。最后控制器调用相应的视图来显示模型返回的数据。
图1.4 MVC处理过程
1.1.4 MVC的优点
MVC作为一种模块化的设计思想,具有如下优点:
多个视图能共享一个模型。在MVC设计模式中,模型响应用户请求并返回响应数据,视图负责格式化数据并把它们呈现给用户,业务逻辑和数据表示分离,同一个模型可以被不同的视图重用,所以大大提高了模型层程序代码的可重用性。
模型是自包含的,与控制器和视图保持相对独立,因此可以方便地改变应用程序的业务数据和业务规则。如果把数据库从MySQL移植到Oracle,或者把RDBMS数据源改变成LDAP数据源,只需改变模型即可。一旦正确地实现了模型,不管业务数据来自数据库还是LDAP服务器,视图都会正确地显示它们。由于MVC的三个模块相互独立,改变其中一个不会影响其他两个,所以依据这种设计思想能构造良好的松耦合的组件。
控制器提高了应用程序的灵活性和可配置性。控制器可以用来连接不同的模型和视图去完成用户的需求,控制器为构造应用程序提供了强有力的重组手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择适当的模型进行业务逻辑处理,然后选择适当的视图将处理结果显示给用户。
1.1.5 MVC的适用范围
使用MVC需要精心的设计,由于它的内部原理比较复杂,所以需要花费一些时间去理解它。将MVC运用到应用程序中,会带来额外的工作量,增加应用的复杂性,所以MVC不适合小型应用程序。
但对于开发存在大量用户界面,并且业务逻辑复杂的大型应用程序,MVC将会使软件在健壮性、代码重用和结构方面上一个新的台阶。尽管在最初构建MVC框架时会花费一定的工作量,但从长远角度看,它会大大提高后期软件开发的效率。
★ 说明 ★
对于一些非常小的项目,或者没有后期开发的项目,MVC的分层设计会给开发带来额外的工作量。可以考虑不使用MVC设计。
文章地址:http://blog.csdn.net/ivorytower/archive/2008/04/23/2318883.aspx
发表评论
-
OGNL表达式 用法详解
2012-04-19 11:44 8985表达式通常用来访问页面中的各种变量,进行结果输出. s ... -
struts2.2.3最小jar
2011-07-18 11:32 1764struts2-core-2.2.3.jar :Struts ... -
转: struts2 标签 2
2011-07-05 11:41 1528一、概要:1、JSP标签技术始于JSP1.12、作用: ... -
转:struts2 标签
2011-07-05 11:39 902struts标签的继承 BodyTagSuppor ... -
struts.xml文件属性配置
2011-06-24 16:32 1205开发中发现struts还有co ... -
FilterDispatcher配置
2011-06-24 16:30 1337配置Struts 2的FilterDispatcher类时,可 ... -
struts.xml配置详解
2011-06-24 16:29 752地址:http://www.cnblogs.com/fmric ... -
struts.properties配置详解
2011-06-24 16:14 932在Struts2的核心包中org\apache\strut ... -
转:Struts 2 下载文件(12)下
2011-06-22 18:54 861(2)同时修改配置文件,增加一个input逻辑视图,修 ... -
转:Struts 2 下载文件(12)中
2011-06-22 18:53 74511.3.2 在Action中指定下载资源 前面的 ... -
转:Struts 2 下载文件(12)上
2011-06-22 18:52 106011.3 Struts 2控制文件下载 文件下载相对于 ... -
转: Struts 2多文件上传(11)下
2011-06-22 18:51 829(3)在配置文件中增加如下配置: ... -
转: Struts 2多文件上传(11) 上
2011-06-22 18:50 84011.2 多个文件上传 很多应用都要求在一个界面中可以 ... -
转: struts 2专用表达式(10)下
2011-06-22 18:49 8818.2 Struts 2的OGNL OGN ... -
转: struts 2专用表达式(10)上
2011-06-22 18:47 778OGNL是Object Graphic Navigat ... -
转: 数据校验功能-AJAX输入校验(9)下
2011-06-22 18:45 11907.4.4 建立JSP视图 建立一个reg-aja ... -
转: 数据校验功能-AJAX输入校验(9)中
2011-06-22 18:43 8647.4.2 建立业务控制器 建立一个简单的业务 ... -
转: 数据校验功能-AJAX输入校验(9)上
2011-06-22 18:41 9027.4 AJAX输入校验 Struts 2框架在使用客 ... -
转: Struts 2的拦截器(8)下
2011-06-22 18:39 838(3)在ch5包内建立一个业务控制器Reg,如代码5. ... -
转: Struts 2的拦截器(8)上
2011-06-22 18:39 726拦截器(Interceptor)是Struts 2的核 ...
相关推荐
spring-webmvc-struts-2.5.6-sources
spring-webmvc-struts.jar对Struts和Spring整合时需要用到的包
spring-webmvc-struts.jar aspectjweaver.jar
E:\download\精通 Struts:基于MVC的JavaWeb设计与开发2-2.part2.rar 共两卷,上传完成。
不用多说了,Struts 2权威指南--基于WebWork核心的MVC开发(高清完整版),解压出来有200多M,因为权限不怎么够,我一共分了12卷,是一本不可多得的好书。第一卷附目录: 第1章 Struts 2概述,第2章 Struts 2下的Hello...
基于MVC架构的知识管理系统-开题报告.docx基于MVC架构的知识管理系统-开题报告.docx基于MVC架构的知识管理系统-开题报告.docx基于MVC架构的知识管理系统-开题报告.docx基于MVC架构的知识管理系统-开题报告.docx基于...
struts1工作原理 struts2工作原理 struts1和struts2比较 spring mvc工作原理 struts和spring mvc比较
电子书-精通Struts基于MVC的WEB设计与开发.rar
Struts 2 技术详解:基于WebWork核心的MVC开发与实践
MVC模式和Struts框架
ASP.NET MVC 经典面试及答案-76页 基础学习资料 技术博客: http://zengxiangzhan.cnblogs.com/
精通Struts:基于MVC的JavaWeb设计与开发(孙卫琴)
MVC注解Spring-Struts2Spring2hibernate3,可以成功的跑起来的三个例子。很值得借鉴的,孩子努力学习吧
Spring.MVC-A.Tutorial-Spring.MVC学习指南 高清可复制版PDF
spring.jar spring-webmvc-struts.jar spring-webmvc.jar 很难找.......欢迎下载!