MVC模式与Struts架构的研究

  • 格式:pdf
  • 大小:163.50 KB
  • 文档页数:2

第9卷第8期 2010年8月 软件导刊 SoftwareGuide VO1.9 No.8 Aug.2Ol0 MVC模式与Struts架构的研究 吴 鹏 (广东科学技术职业学院计算机工程学院,广东珠海519090) 摘 要:在互联网时代,基于Web开发应用系统是一个必然选择,它为用户提供高效、方便的使用环境。要开发结构 良好、维护方便的Web应用系统,首先应当选择合适的设计框架。Struts是目前流行的基于J2EE的架构方案,是一 个基于模型一视图一控制器MVC模式的开源架构,非常适合于Web应用系统的开发。 关键词:MVC;Struts;开源架构;业务逻辑;J2EE 中图分类号:TP301 文献标识码:A 文章编号:1672—78o0(20l0)08—0017—02 1 MVC模式 MVC模式主要由3个部分组成:模型(Mode1)、视图 (View)和控制器(Controller),在各个对象之间取得高层接口, 使应用程序的输入、处理和输出分开,同时在程序与程序之间 进行重用。 1.1模型(Mode1) 是程序执行的关键部分。所有的操作都是在这一部分实现 的,提供应用业务逻辑类。它若需要取得视图中的对象或更新 视图时.需要通过控制器来进行处理。模型表示业务逻辑和业 务规则等,在MVC的3个部件中,拥有最多的处理任务。它可 以用JavaBean和EJB等组件技术来处理数据库的访问。模型 能为多个视图提供数据。由于应用于模型的代码只需写一次就 可以被多个视图重用,所以减少了代码的重复性。 1.2视图(View) 视图是模型在屏幕上的显示(HTML页面、JsP页面、 SwingGUI),是用户接口。视图可以通过模型访问数据,并根据 客户端的要求来显示数据。视图必须保证当模型改变的时候, 数据显示也必须同时改变。在本系统中,是用对应各个功能模 块的JSP(Declare JSPs,Proposer JSPs,Unit JSPs等)和对应这些 JSP网页进行组织的模版JSP来实现的。这些JSP经过组合 展示给用户程序的输入输出网页。 1.3控制器{Controller) 控制器处理用户与应用系统的交互操作,其职责是控制提 供模型中任何变化的传播,确保用户界面与模型问的对应联 系,它接受用户的输入,将输入反馈给模型,进而实现对模型的 计算控制,是模型和视图协调工作的部件。 控制器接受用户的输入并调用模型和视图去完成用户的 需求。当用户单击Web页面中的超链接和发送HTML表单时, 它只是接收请求并决定调用哪个模型组件去处理请求,然后确 定用哪个视图来显示模型处理返回的数据。控制器连接不同的 模型和视图去完成用户的需求,给定一些可重用的模型和视 图。控制器可以根据用户的需求选择模型进行处理,然后选择 视图将处理结果显示给用户。如图1所示,描述了模型、视图、 控制器它们三者的关系: U set Ljestures 。。‘。。。。。。。。。’_. Method hwocations …-…一-Events 图1 MVC组件关系图 MVC的处理过程是:首先控制器接收用户的请求,并决定 应该调用哪个模型来进行处理;然后,模型用业务逻辑来处理 用户的请求并返回数据;最后,控制器用相应的视图格式化模 型返回的数据.并通过表示层呈现给用户。 MVC模型具有如下优点: (1)MVC模式很好地解决了软件工程中如何使软件系统 各模块之间最大限度地降低其复杂的耦合关系,以及系统显示 逻辑和业务逻辑之间的矛盾(即用户界面的多变性和业务逻辑 的相对不变性),尽可能地提高了系统的可维护性和可扩展性。 (2)模型、视图、控制器三者的相互独立,使得我们改变其 中一个而不会影响其他两个(或者说影响甚小),据此可以构造 良好的松耦合构件。 (3)所有的模型和视图都是由控制器连接和调用的.控制 器的这种桥梁枢纽作用使得它可以根据用户不同阶段的不同 作者简介:吴鹏(1979一),男。广东珠海人,硕士,广东科学技术职业学院助教,研究方向为软件sf-程和嵌入式系统。

 ・18・ 软件导刊 2010年 需求选择不同的模型进行处理,并选择不同的视图将处理结果 显示给用户,极大地提高了系统的灵活性 (4)一个模型可以拥有多个视图或者说多个视图可以共享 一个模型。多个视图能够提供多种数据显示方式。以满足不同 用户的需求。变化传播机制可以确保所有相关的视图和其模型 达到同步,当然这一切都在于控制器的协调 (5)模型的可移植性和伸缩性。模型的相对独立性使得它 很容易被移植到新的平台工作,很容易被改变业务规则而不影 响(或者说这种影响甚小)视图和控制器。 (6)潜在的框架结构。可以基于此模型建立应用程序框架, 而不仅是用在界面的设计中。 2 Struts架构 Struts架构是建立在标准的Servlet框架之上的,它提供了 一种简单的编程模式.体现了所有开源架构的特点。它采用的 主要技术是Servlet,JSP和custom tag library(用户定义标签 库)。Struts框架的基本构成如图2所示。 业哥层 蕺姑层 习 … ~ i{要至弓 r 骂…~一 图2 Struts UML圉 作为一个MVC的框架,Struts对Model、View和Controller 都提供了对应的实现组件,对应上面的UML图,分别进行介绍。 2.1模型(Mode1) Struts的Model层由Action和ActionForm对象组成,Acti— on对象封装着具体的处理逻辑,由它来调用业务逻辑模块,并 且把响应提交给View组件。Act ionForm对象用来描述客户端 的表单数据.利用它和Struts定义的标签实现对表单数据的良 好封装的支持。Action对象和ActionForm对象可以直接交互, 不需要Request和Response对象的支持。Struts一般用一组 JavaBean来表示系统内部状态。也可以用EntityEJB和Session EJB来实现更复杂的应用。 2.2控制器(Controller) 在Struts架构中,主要的控制组件是ActionServlet和 ActionMapping。由Act—ionServlet接受所有的http请求,并把请 求填充进FormBean。FormBean对数据进行有效性检测,检测通 过后将参数传给模型部分的Action类。每一个请求到Action 处理器的映射都由ActionMapping对象实现,并且可以在 Struts~confing.xml文件中配置。要修改映射,只要修改这个配 置文件。 2.3视图(View) 这部分由JSP技术实现。通过Struts提供的标记库html、 Bean、Logic以及Temp late来创建JSP表单,并实现了和Model 部分的ActionForm的映射,完成对用户数据的分装。这有利于 显示与逻辑的分开。而且把用户名和密码保存到ActionForm Bean中,这样就不需和Request、Response对象进行数据交互。 从而避免直接从不是很安全的H rP连接发送这些重要信息 Struts框架的处理流程清楚地体现了MVC系统的特点,简 单的Struts组件结构如图3所示。Struts Controller ActionServlet 处理客户请求,利用配置的ActionMapping对象把请求映射到 Action处理器对象进行处理。Action处理对象访问ActionForm 中的数据,处理和响应客户请求,它还调用后台的Bean组件. 这些组件封装了具体的业务逻辑。Action处理器对象根据处理 结果通知Controller,Controller进行下一步的处理。 图3 Struts框架的组件结构图 Struts的核心是Controller,即ActionServlet.而ActionServl— et的核心就是Struts2config。xml。Struts2config。xml集中了所有 页面的导航定义。根据配置文件指定.才使得ServletAction、 ActionMapping、Action、ActionForm这几个不同层次的组件相互 交互并协调工作。 Struts由一组相互协作的类、Serlvet以及JsP、TagLib组成。 基于Struts构架的Web应用程序基本上符合MVC2的设计标 准,可以说是MVC设计模式的一种变化类型。根据上面对 framework的描述,我们很容易理解为什么说Struts是一个 Web framwork,而不仅仅是一些标记库的组合。但Struts也包含 了丰富的标记库和独立于该框架工作的实用程序类。 3结束语 Struts由一组相互协作的类和标记库构成,它们构成一个 可重用的MVC实现。相反,在未使用Struts框架开发的Web应 用中,系统的业务数据处理功能通常与显示功能交织在一起, 这使得代码的可维护性很差,并且不利于程序的调试和测试。 参考文献: [1]陈川.基于MVC设计模式构筑JSP,seⅣlet+EJB的Weh应用[J]. 计算机工程,2001(11). [2]PETERSON,TOMMY.AJAX:MVC Redux[J].Computer W0rJd, 2005(7). [3] 叶晓彤.基于Struts与JDO的J2EE企业应用系统架构[J].微机 发展,20o5(7). [4] 徐宪武,刘永泰.基于MVC模式的WEB应用经典框架一STRUTS [J].科技情报开发与经济,2004(7). [5]E ALTHAMMER,W PREE.Design and implementation of an MVC— based architecture for E—commerce applications[J].International Journal of Computers,2001(2). [6] 曾钦宏,徐学洲.基于Struts的文档管理系统[J].微机发展,2005 (8). (责任编辑:卓光)