浅析Struts与Spring的整合

来源 :电子与电脑 | 被引量 : 0次 | 上传用户:jun13632594162
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文论述了Struts和Spring整合的三种方法,并对这三种方法做了做了详细的分析和对比。
  关键词:Struts、Spring、整合
  
  一、引言
  
  Struts框架是Apache基金会Jakarta项目组的一个Open Source(开放源代码)项目,该框架由一组相互协作的类(组件)、Servlet以及标签库组成,是对传统MVC设计模式的一种实现和标准化,充分体现了MVC模式“分离显示逻辑和业务逻辑”的设计思想,是目前Java Web开放中广泛采用的技术。
  Spring是由Rod Johnson创建的一个开源框架,目的是为了解决Java Web企业应用开发的复杂性。Spring提供了IoC(控制反转)、AOP(面向切面编程)、声明式事务等功能,提高了Java Web应用开发的效率和质量。更重要的是,Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate等)的直接支持。
  虽然Spring本身可以作为一个MVC实现,但由于Struts在MVC方面的影响力,使得开发人员者更愿意将Struts整合到Spring中,而不是使用Spring MVC代替Struts。本文总结归纳了整合Struts和Spring的三种方法,并讨论了各自的优缺点。
  
  二、整合struts和spring
  
  1,使用ActionSupport类
  (1)原理
  当客户端发送http请求到控制器时,使用请求参数填充FormBean,并根据struts-config.xml的配置将请求转发给对应的Action,Action通过调用父类的getWebApplicationContext()方法获取ApplicationContext对象,在通过ApplicationContext对象从Spring容器中获取相关的JavaBean,通过Action处理后将处理结果会发给控制器,控制其根据struts-config,xml的配置将处理结果传回到客户端。
  (2)用法
  ①在struts-config xml中配置插件,代码如下:
  
  
  </plug-in>
  ②创建A ction类,继承自ActionSupport或DispatchActionSupport;
  ③在Action中通过调用getWebApplicationcontext()方法获取ApplicationContext对象,然后调用ApplicationContext对象的getBean()方法从Spring容器中取出相应的对象。
  (3)评价
  这种技术很简单并且易于理解。但是,它将Struts动作与Sp ring框架耦合在一起。如果想替换掉Spring,那么就必须重写代码。同时,由于Struts动作不在Spring的控制之下,所以它不能获得SpringAOP的优势。当使用多重独立的Sp ring环境时,这种技术可能有用,但是在大多数情况下,这种方法不如另外两种方法合适。
  2,使用DelegatingRequestProcessor类
  (1)原理
  客户端发送http请求到控制器ActionServlet,控制器将使用请求参数填充FormBean并根据Struts-config,xml的配置将请求转发给DelegatingResquestProcessor,DelegatingResquestProcessor根据Spring配置文件从web容器中提取ActionBean并调用相关的JavaBean,由ActionBean对请求进行处理,处理完毕后在转发给控制器,控制器再根据struts-config.xml的配置把将处理结果发挥给客户端。
  (2)用法
  ①在struts-config.xml中配置插件,代码如下:
  
    vaIue=”classpath applIcationContext.xmI”/>
  </plug-in>
  ②在struts-config.xml中增加如下节点:
    DelegatingRequestProcessor”/>
  ③创建Action,并在spring配置文件ApplicationContext xml中对其进行注册。
  (3)评价
  这种方法使Struts动作并不知道它正被Spring管理,并且使我们能够利用Spring的动作管理框架的所有优点。由于Struts动作注意不到Spring的存在,所以我们不需要重写我们的Struts代码就可以使用其他控制反转容器来替换掉Spring。看来这种方法的确比第一种方法好,但还是存在着一些问题。如果我们使用一个不同的RequestProcessor,则需要手动整合Spring的DelegatingRequestProcessor。添加的代码会造成维护的麻烦并且将来会降低的应用程序的灵活性。
  3,将StrutsAction管理委托给Spring框架
  (1)原理
  客户端发送http请求到控制器ActionServlet,控制器将使用请求参数填充FormBean,并根据struts-config.xmI的配置将请求转发给DelegatingActionProxy,DelegatingActionProxy根据请求信息从Spring容器中获取相应的Action并由Spring为其注入相关的JavaBean,请求经Action处理完毕后在转发给DelegatingActionProxy,DelegatingActionProxy在转发处理结果给控制器,控制器根据struts-config.xml的配置把将处理结果发挥给客户端。
  (2)用法
  ①在Struts-config.xml中配置插件,代码如下:
  
    value=classpath:applicationContext.xmI/>
  </plug-in>
  ②创建Action并将st ruts-config,xml中的Action节点的type更改为org.springframework.web.struts,DeIegatingActionProxy
  ③在Spring配置文件中注册ActionBean。
  (3)评价
  动作委托方法是这3种方法中最好的。Struts动作不了解Spring,不对代码作任何改变就可用于非Spring应用程序中。RequestProcessor的改变不会影响它,并且它可以利用SpringAOP特性的优点。
  
  三、结束语
  
  在本文中,主要讨论了Struts动作整合到Spring框架中的3种方法。第1种方法简单而快捷,但是会将Struts动作与Spring框架耦合在一起,当改变框架时需要重写代码。第2种方法通过委托RequestProcessor巧妙地解开代码的耦合,但是它的可扩展性不强。第3种方法是最好的,将Struts动作委托给Spring框架可以使代码解耦,从而使可以在的Struts应用程序中利用Spring的特性。
其他文献
数据转换器市场包括ADc和DAC器件,如果不把ADC分开的话,DATABEANS预计,数据转换器整体市场的复合增长率在13%以上。与整个半导体行业发展水平相当。单独划分的话,ADC的整体增长率,略高于这13%,这是由ADC在数据链中的作用和需求共同决定的。  细分数据转换器市场,工业应用和通信应用占据主导地位,它们各占1/3,加在一起超过2/3的市场份额。其次就是消费类产品,占18%,然后是汽车电
期刊
或许这是因为我第一次有机会从事真正的嵌入式系统的开发工作,亦或是我现在正在做的事就像玩乐一般,我正经历一般正常嵌入式系统开发者同样会面临的状况。无论你相信与否,就算有最新、最好的硬设备,你还是会受限于产品内存和储存容量,以及处理器速度及效能等因素。更不用说电源不够的问题(感觉就好像是用最高速度在处理绘图回路,然后看看你的电池可以撑多久一样)。我们真的必须认真思考这些问题,并且小心地编写程序,这样才
期刊
毫无疑问,金融海啸对内存、Flash这样的需要大笔资金作为给养的制造商是具有毁灭性打击的。春节刚过,奇梦达(Qimonda)率先被击溃,宣布破产退出,NOR闪存产业,率先不支倒地的是Spansion,也于2009年初宣布进入破产保护程序。自从2009年初进入破产法第11章后,市场中就很少听到Spansion的消息,这使得关注这家公司的很多人忧心忡忡,担心Spansion步Qimonda后尘而去。不
期刊
德州仪器的两款模拟数字转换器(ADc)ADS8329及ADS8330,独特地结合了低功耗,高速及高效能的特性。此一组合使得这两款模拟数字转换器成为许多应用的理想选择,例如通信、医疗仪器、自动测试设备、数据撷取系统(dataacqul sltion system)或工业过程控制(industiralprocess control)。在本文中,德州仪器ADC马达控制设计经理Frank Ohnhuser
期刊
医疗电子产品依其是否具有医疗行为,可粗略分为治疗性设备(Medical Device)及预防性装置。后者也就是个人医疗保健设备(Healthcare Device),例如血压计及血糖计等消费性医疗电子产品。随着近年来“预防胜于治疗”观念的普及,市场对于这种消费性医疗电子产品的需求亦呈现逐渐上扬趋势。  一般而言,由于医疗电子产品的使用涉及病人的生命安全,各国法令普遍规定治疗性医疗仪器必须从专业医学
期刊
使用FPGA建构采用DSP架构的系统会有一定难度,经常会出现进度推迟的情况。设计、整合、验证、功能需求变化以及投产过程中都有可能出现意想不到的进度推迟。现在,有一种FPGA开发工具,它可缩短产品开发周期,解决了产品生命周期中很多常见的难题。    FPGA优化DsP算法的复杂性    大家都知道FPGA在可编程平台上具有最好的DSP性能,但其缺点是,在FPGA中优化DSP算法是一项比较困难的工作。
期刊
在美光科技宣布完成对恒忆(NumonyxHoldings B.V.)的收购后,意法半导体(ST)宣布,通过出售其持有恒忆48.6%的股份,意法半导体获得以下对价:  ●6688万股美光普通股,这些股票将视为交易性金融资产,按照5月6日的美光股价计算,这些股份价值5.852亿美元:其中大部分的美光股票都已经采取套期保值。  ●恒忆在意大利卡塔尼亚的M6厂设施的未来全部所有权。意法半导体已将这座工厂设
期刊
1半导体产业报告    第二季半导体产业概况  根据WSTS统计,09Q2全球半导体市场销售值达517亿美元,较上季(09Q1)增长16.9%,较去年同期(08Q2)衰退20.1%;销售量达1,273亿颗,较上季(09Q1)增长31.3%,较去年同期(08Q2)衰退13.3%:ASP为O.406美元,较上季(09Q1)衰退10.9%,较去年同期(08Q2)衰退7.8%。  09Q2美国半导体市场销
期刊
业界对MEMs(micro-electromechanical system)微机电系统的增长性大多乐观以对,运用MEMs技术发展出来的组件与应用也常见创新的惊喜。据isupply对众多MEMs组件市场增长的预估中,压力传感器堪为继最大产值的喷墨印表读取头之后,居第二大的市场地位。无怪乎近期美日两大厂美商飞思卡尔与日系Epson Toyocom相继针对不同应用发表最新的压力传感器,且看它们之间的差
期刊
中国作为目前世界上最大的移动市场,对移动标准的发展,希望制定不同于西方的自己的标准。这就是目前的3G标准TD-SCDMA以及未来的4G标准TD-LTE。  在2006年初,中国政府宣布TD-SCDMA正式成为中国的3G移动通信的标准 在2009年,世界最大的移动运营商中国移动宣布将提供基于TD-SCDMA为标准的3G服务,同时,中国联通以及中国电信分别将推出以WCDMA以及CDMA-2000标准
期刊