- 浏览: 63021 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
以下内容摘自《程序天下: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 9047表达式通常用来访问页面中的各种变量,进行结果输出. s ... -
struts2.2.3最小jar
2011-07-18 11:32 1810struts2-core-2.2.3.jar :Struts ... -
转: struts2 标签 2
2011-07-05 11:41 1560一、概要:1、JSP标签技术始于JSP1.12、作用: ... -
转:struts2 标签
2011-07-05 11:39 945struts标签的继承 BodyTagSuppor ... -
struts.xml文件属性配置
2011-06-24 16:32 1232开发中发现struts还有co ... -
FilterDispatcher配置
2011-06-24 16:30 1364配置Struts 2的FilterDispatcher类时,可 ... -
struts.xml配置详解
2011-06-24 16:29 786地址:http://www.cnblogs.com/fmric ... -
struts.properties配置详解
2011-06-24 16:14 974在Struts2的核心包中org\apache\strut ... -
转:Struts 2 下载文件(12)下
2011-06-22 18:54 894(2)同时修改配置文件,增加一个input逻辑视图,修 ... -
转:Struts 2 下载文件(12)中
2011-06-22 18:53 78611.3.2 在Action中指定下载资源 前面的 ... -
转:Struts 2 下载文件(12)上
2011-06-22 18:52 109111.3 Struts 2控制文件下载 文件下载相对于 ... -
转: Struts 2多文件上传(11)下
2011-06-22 18:51 852(3)在配置文件中增加如下配置: ... -
转: Struts 2多文件上传(11) 上
2011-06-22 18:50 88511.2 多个文件上传 很多应用都要求在一个界面中可以 ... -
转: struts 2专用表达式(10)下
2011-06-22 18:49 9158.2 Struts 2的OGNL OGN ... -
转: struts 2专用表达式(10)上
2011-06-22 18:47 817OGNL是Object Graphic Navigat ... -
转: 数据校验功能-AJAX输入校验(9)下
2011-06-22 18:45 12207.4.4 建立JSP视图 建立一个reg-aja ... -
转: 数据校验功能-AJAX输入校验(9)中
2011-06-22 18:43 8967.4.2 建立业务控制器 建立一个简单的业务 ... -
转: 数据校验功能-AJAX输入校验(9)上
2011-06-22 18:41 9367.4 AJAX输入校验 Struts 2框架在使用客 ... -
转: Struts 2的拦截器(8)下
2011-06-22 18:39 873(3)在ch5包内建立一个业务控制器Reg,如代码5. ... -
转: Struts 2的拦截器(8)上
2011-06-22 18:39 766拦截器(Interceptor)是Struts 2的核 ...
相关推荐
在探讨Struts2与WebWork2的联系与区别的过程中,我们不得不提到它们的历史渊源以及在Java Web开发领域中的地位。Struts2框架实际上可以视为WebWork2框架的继承者,两者之间的关系紧密而复杂,下面将从多个角度深入...
Struts是一款开源的MVC(Model-View-Controller)框架,用于简化Java Web应用程序的开发过程。本书通过理论与实践相结合的方式,帮助读者快速掌握Struts框架的使用方法。 ### 二、主要内容概览 #### 1. **Struts ...
在IT行业中,Spring框架是Java企业级应用开发的首选,而Struts2则是早期非常流行的MVC框架之一。本文将围绕这两个框架的核心知识点进行详细阐述,以帮助你在面试或日常工作中更好地理解和应用它们。 首先,让我们...
- 系统采用MVC架构设计,分为表示层(struts)、服务层、用户客户端、数据库、路由引擎、规则引擎和AP代理。 2. 系统部署架构: - 根据环境需求和资源条件,EFGP系统可以部署在不同配置的服务器上。 - 可以将Web...
首先,提到Java,我们不得不提J2SE(Java 2 Platform Standard Edition),它是Java的基础平台,包含Java编程语言核心库,是学习Java技术的起点。对于新手来说,了解和掌握J2SE是至关重要的。在J2SE的学习过程中,会...
面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....
1. **开发环境**:使用Eclipse或MyEclipse作为开发工具,不指定具体版本,体现了对开发环境适应性的要求。 2. **架构**:采用BS(Browser-Server)架构,意味着需要构建一个基于Web的用户界面,通过HTTP与服务器...
1. MVC三层架构模式:在Java Web开发中,MVC模式是一种常见的设计模式,其中M代表Model(模型)、V代表View(视图)、C代表Controller(控制器)。使用MVC模式可以将数据和业务逻辑分离,使得系统更易于维护和扩展。...
曾经对某个类要寻找的是哪个 魔法般的属性项或系统属性感到不解,为此不得不去读Javadoc甚至源编码?有了Spring,你仅仅需要看看类的JavaBean属性。 Inversion of Control的使用(在下面讨论)帮助完成了这种简化。 ...
【基于Web的Java程序设计】课程是一门专为学习者深入理解如何利用Java技术开发基于Browser/Server(B/S)架构应用程序而设计的专业方向课程。这门课程在IT教育领域中占据重要地位,因为它涵盖了JavaEE的核心概念和...
在讨论电子商城系统的技术实践时,我们不得不提及到另外两个关键的技术框架:Struts和Spring。Struts作为MVC架构的一个实现,负责接收用户请求、处理业务逻辑,并将结果返回给用户;而Spring则是一个全面的编程和...