基于MVC模式的Struts和Spring框架的分析及整合

来源 :硅谷 | 被引量 : 0次 | 上传用户:chongzimm
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要]简单介绍J2EE,详述MVC模式中Model,View以及Controller之间的关系。对目前Web应用开发中的两个流行框架Struts和Spring进行了分析。针对这两个框架的优点和不足,提出一个将两种框架分层应用、整合形成的新框架。新的框架充分利用Struts、Spring框架技术的各层的优点,弥补之前两个框架中的不足。
  [关键词]J2EE MVC模式 Struts 框架 Spring 框架 整合
  中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)1110051-01
  
  一、J2EE简介
  
  J2EE(Java 2 Enterprise Edition)是建立在Java 2平台上的企业级应用的解决方案。J2EE技术的基础便是Java 2平台,不但有J2SE平台的所有功能,同时还提供了对EJB,Servlet,JSP,XML等技术的全面支持,其最终目标是成为一个支持企业级应用开发的体系结构,简化企业解决方案的开发,部署和管理等复杂问题。事实上,J2EE已经成为企业级开发的工业标准和首选平台。J2EE并非一个产品,而是一系列的标准。
  
  二、MVC设计模式
  
  MVC英文即(Model-View-Controller),即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层模型层、视图层、控制层。
  视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。模型(Model)就是业务流程/状态的处理以及业务规则的制定。控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。
  
  三、StrutsJ2EE典型的MVC框架
  
  (一)Struts框架的分析
  Client browser(客户浏览器)表示来自客户浏览器的每个HTTP请求创建一个事件。Web容器将用一个HTTP响应做出响应。Controller(控制器)接收来自浏览器的请求,并决定将这个请求发往何处。就Struts而言,控制器是以servlet实现的一个命令设计模式。struts-config.xml文件配置控制器。业务逻辑更新模型的状态,并帮助控制应用程序的流程。就Struts而言,这是通过作为实际业务逻辑“瘦”包装的Action类完成的。Model(模型)表示应用程序的状态。业务对象更新应用程序的状态。ActionForm bean在会话级或请求级表示模型的状态,而不是在持久级。JSP文件使用JSP标记读取来自ActionForm bean的信息。View(视图)就是一个 JSP 文件。其中没有流程逻辑,没有业务逻辑,也没有模型信息,只有标记。标记是使 Struts 有别于其他框架(如 Velocity)的因素之一。Struts框架为Model部分提供了Action和ActionForm对象,所有的Action处理器对象都是Action类派生的子类。Struts中的Controller功能是由ActionServlet和ActionMapping对象构成。
  (二)Struts框架的优、缺点
  Struts 主要有以下几个优点:(1)JSP 标记机制的使用,标记特性从 JSP 文件获得可重用代码和抽象 Java 代码。这个特性能很好地集成到基于 JSP 的开发工具中,这些工具允许用标记编写代码。(2)标记库。(3)管理问题空间,分治是解决问题并使问题可管理的极好方法。当然,这是一把双刃剑。问题越来越复杂,并且需要越来越多的管理。
  Struts的缺点:(1)有限的适用范围,Struts 是一种基于 Web 的 MVC 解决方案,所以必须用 HTML、JSP 文件和 servlet 来实现它。(2)复杂性,在将问题分为几个部分的同时也引入了复杂性。毫无疑问,要理解 Struts 必须接受一定的培训。随着变化的不断加入,这有时会令人很沮丧。
  
  四、SpringJ2EE的一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架
  
  (一)Spring框架的简单介绍
  Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。从大小与开销两方面而言Spring都是轻量的。Spring通过一种称作控制反转(IoC)的技术促进了松耦合。同时,Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发。
  (二)Spring框架的分析
  Spring框架是一个分层架构,由七个定义良好的模块组成。Spring模块构建在核心容器之上,核心容器定义了创建、配置和管理bean的方式,组成Spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:
  


  核心容器:核心容器提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,它是工厂模式的实现。BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
  (三)Spring框架的优、缺点
  Spring框架有以下几个优点,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类,代码的污染极低。Spring框架独立于各种应用服务器,基于Spring框架的应用,可以真正实现良好的移植性能。Spring的DI机制降低了业务对象替换的复杂性。Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分和全部。
  Spring作为一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架已经非常优秀,如果非要谈论其不足,Spring框架的开放性可能会给它带来一些不好的因素,Spring奉行的原则就是:不要重新发明轮子,如果有好的实现,就集成进来,而不是自己重新去做。
  
  五、基于MVC模式的Struts与Spring框架的整合
  
  Struts框架有成熟的标签库,Web层主要由Struts框架实现;
  
  而Spring框架同Struts框架能够完美的结合,并且在事务管理和依赖注入方面有着独到之处,因此主要用于业务逻辑层。这样实现Struts与Spring的集成,主要使得Spring提供的IoC与AOP能为Struts使用。我们的整合方法是利用Struts架构作为系统的整体基础架构,它负责了MVC的分离,而在Struts架构的业务层用Spring来支持。将Spring引入Struts框架中的关键是:Spring是轻量级容器,在业务层中使用可以尽可能的减少消耗。同时它可以在Struts中得到应用上下文。在Struts中Action是整个流程的核心部分,所以只要我们能够在Struts的Action中得到相应的Spring应用上下文,就可以通过它来得到Spring框架丰富IoC和AOP管理功能。
  将Spring集成到Struts中后,我们会得到一个新的Web应用框架,其各个部分组成如图1所示.
  Struts框架的优势在于简单易用,提供了丰富的Taglib,使得对视图层的实现节省了大量的开发时间,并且具有良好的页面导航功能,开发者可以通过struts-config.xml把握整个系统各部分之间的联系,这对于后期维护有着极大的帮助,尤其是当开发者换人接手该项目时,这种优势体现得更加明显.而Spring的目标是提供一种贯穿始终的解决方案,将各种专用框架整合成一个连贯的整体构架。在这种意义上说Spring框架就像一个粘合剂,将各个领域出色的解决方案粘合到一起,构成一个新的架构,更好地为应用服务。
  通过整合,我们可以在Struts中使用Spring的应用上下文,使Struts得到了Spring IoC和AOP所带来的优势。并且对熟悉Struts的开发人员来说,其视图层与控制层的开发并没有因Spring的加入而产生很大的变动。当我们将Spring集成到Struts中后,就可以使用Spring中的IoC及AOP对系统的业务层进行有效的管理,从而使业务层的实现得到改善。
  
  六、结束语
  
  Struts和Spring采用低耦合的方式整合在一起。应用起来更灵活。两种框架是单独运行的,对于表示层来说,有的地方可能不必用到中间层的对象。Struts和Spring的整合方法很多,但最终目的都是希望所产生的新的架构可以很好利用上两种框架的优点,并且能很好的适合所要开发的项目本身。
  
  参考文献:
  [1]Rod Johnson, Juergen Hoeller, Alef Arendsen etc. Java/J2EE Application Framework Reference Document v2.0, 2006.
  [2]孙卫琴. 精通Struts:基于MVC的Java Web设计与开发[M]. 北京: 电子工业出版社,2004.
  [3]郭锋. Spring从入门到精通. 北京: 清华大学出版社2006,1.
  [4]IBM developerWorks 中国. Http://www.ibm.com/developerworks/cn
  /java/j-struts/.
  [5]IBM developerWorks 中国. Http://www.ibm.com/developerworks/cn
  /java/wa-spring1/.
  [6]中科永联. Http://www.itisedu.com/phrase/200604231324325.html.
  
  作者简介:
  任仁,男,新疆,同济大学软件学院软件工程专业06级硕士,主要研究方向是企业计算。
其他文献
[摘要]Oracle作为强大的数据库管理系统,被应用到生产和实践的各个领域。介绍以Oracle为后台,结合SQL技术的试验设计管理系统的数学原理,并详细叙述开发过程中碰到的负载平衡问题和数据交换问题及解决办法。  [关键词]试验设计 Oracle数据库系统 数据交换  中图分类号:TP31 文献标识码:A 文章编号:1671-7597(2008)1010146-01    一、引言    试验设计
期刊
[摘要]C语言作为一门专业基础课和程序设计的入门语言,概念多、抽象、难学,从教学语言、内容和方式等方面,以提高C语言的趣味性进行相应的探讨。  [关键词]C语言 教学现状 趣味教学 多媒体  中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)1110054-01    C语言自1972年问世以来,因其功能强大、使用灵活、可移植性好、能对硬件直接操作,既有高级语言的特点,又
期刊
[摘要]分析EPON的工作原理,总结EPON接入网的常见故障,并给出解决方案。  [关键词]EPON OLT ONU 故障   中图分类号:TP3文献标识码:A 文章编号:1671-7597(2008)1110045-01    一、EPON的主要原理分析    EPON传输体系主要由OLT,ONU,分光器组成。  OLT是光线路单元,放在局端机房,实现业务的聚合和下发;  ONU是光网络单元,放
期刊
[摘要]办公自动化系统在机关事业单位应用非常广泛,公文处理留痕是一个较为关键的技术问题,对基于Lotus Domino的办公自动化系统的公文留痕处理的各种方法进行比较分析,并提出了自己的解决方法。  [关键词]办公自动化 公文留痕 Lotus Domino 控件  中图分类号:TP3文献标识码:A 文章编号:1671-7597(2008)1110049-02    一、引言    办公自动化系统(
期刊
[摘要]随着Internet的普及,越来越多的企事业单位建立了自己的WWW网站,单位通过网站可以展示产品,发布最新动态,与用户进行交流和沟通,与合作伙伴建立联系,以及开展电子商务等。与此同时,企事业单位内部也建立了功能完善的办公自动化系统,可以快速的实现传统办公无法实现的功能。现今,包括政府部门、事业单位、学校等单位大多都建立了具有自身特色的办公自动化系统。所以作为设计人员,笔者认为有必要在开发系
期刊
[摘要]传统网络程序的开发是基于页面的、服务器端数据传递的模式,把网络程序的表现层建立于HTML页面之上,而HTML是适合于文本的,传统的基于页面的系统已经渐渐不能满足网络浏览者的更高的、全方位的体验要求了。而富互联网应用(Rich Internet Applications,缩写为RIA)的出现就是为了解决这个问题。主要探讨在Web2.0标准下,如何使用Adobe Flex 3构建富互联网应用程
期刊
[摘要]软件复用是在软件开发中避免重复劳动的解决方案。通过软件复用,可以提高软件开发的效率和质量。软件复用被视为解决软件危机,提高软件生产效率和质量的现实可行的途径。主要研究以日本一家中型自动售货连锁店信息管理系统中总部业务管理子系统(AMSystem)为背景,探讨在struts框架下,MVC Model2设计模式在系统中的实现,并在此基础上对系统中通用性功能进行抽象,设计并实现这些通用性组件,以
期刊
[摘要]通过介绍薄壁管桩复合地基在上海A15高速公路中的应用情况,阐明薄壁管桩复合地基这一软基处理新技术的施工方法、施工工艺和质量控制要点。  [关键词]软基处理 薄壁管桩 施工原理 施工工艺 质量控制   中图分类号:TU7 文献标识码:A 文章编号:1671-7597(2008)1110094-02    一、工程概况    A15新建公路西起浙江上海市界,接浙江省申嘉湖高速公路,东至浦东机场
期刊
[摘要]小湾电站拥有混凝土最高双曲拱坝之称(坝高292m),其施工导流方案、施工进度及结构要求等决定了混凝土大坝接缝灌浆的特殊性,结合云南小湾气候特征需全年安排接缝灌浆施工。在灌浆过程中以排气管出浆作为质量重要控制点。  [关键词]技术要求 接缝灌浆 过程控制 质量检查 小湾电站  中图分类号:TU7 文献标识码:A 文章编号:1671-7597(2008)1110097-01    一、工程概况
期刊
[摘要]分别介绍在Windows操作系统下的三种实时视频数据采集的方法,即基于VFW的实时视频采集,基于DirectShow的实时视频采集和基于视频卡附带软件开发工具箱(SDK)的实时视频采集,并给出实现的核心代码。  [关键词]视频采集 VFW DirectShow SDK  中图分类号:TP391文献标识码:A 文章编号:1671-7597(2008)1110067-02    随着计算机网络
期刊