




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
作者:GeorgeFranciscus出处:ibm2006-10-0708:00StrutsRecipesGeorgeFranciscusStruts——StrutsSpringStrutsRecipesGeorgeFranciscusStruts——Struts应用程SpringGeorgeStrutsStrutsSpringbeans那样。结果是一个增强的web框架,这个框架可以方便地利用SpringAOP的优势。您肯定已经听说过控制反转(IOC)设计模式,因为很长一段时间以来一直在流传关于它的信息。如果您在任何功能SpringStrutsSpring框架,您将亲身体会到IOC模式的强大。将一个Struts应用程序整合进Spring框架具有多方面的优点。首先,Spring是为解决一些关于JEE的真实世界问题而设计的,比如复杂性、低性能和可测试性,等等。第二,Spring框架包含一个AOP实现,允许您将面向方面技SpringStrutsStruts处理自己好。但是这是观点问题,我演示三种将Struts应用程序整合到Spring框架的方法后,具体由您自己决定使用哪一种。SpringSpringRodJohnsonJava?企业软件开发,并且提议很多企业难题都能够通过战略地使用IOC模式(也称作依赖注入)来解决。当Rod和一个具有奉献精神的开放源码开发者团队将这个理论应用于Spring框架。简言之,SpringXML配置文件方便地将对象连接在一起。每个对象都可以通过显示一个JavaBean属性收到一个到依赖对象的引用,留给您的简单任务就只是在一个XML配置文件中把它们连接好。Spring框架能够提供更多特性。Spring支持可插拔的事务管理器,可以给您的事SpringAOPStrutsStruts相似,SpringMVCStruts在MVC方面仍然是最好的。很多开发团队已经学会在时间紧迫的时候利用Struts作为构造高品质软件的基础。StrutsSpringSpringMVC。没必要进行转换对您来说是一个好消息。SpringStrutsWebSpring的业务和持久层。最后的结果就StrutsMVCSpring框架的方法。我将揭示每种方法的缺陷并且对比它们的优点。一旦您了解到所有三种方法的作用,我将会向您展示一个令人兴奋的应用程序,这个程序使用的是这对Struts和Spring的理解。在处理各种不同情况的时候,这将给您提供一个广阔的选择范围。方法如下:SpringActionSupportSpringDelegatingRequestProcessorStrutsStrutsActionSpringSpringContextLoaderPluginStrutsActionServletSpring应用程序环境。就像添加任何其他插件一样,简单地向您的struts-config.xml文件添加该插件,如下所示:<plug-inclassName=<plug-inclassName=1.SpringSpringStrutsSpring的最直观的方式。为了使它变得更简单,Spring提供了一些帮助。为了方便地获得Spring环境,org.springframework.web.struts.ActionSupport类提供了一个getWebApplicationContext()SpringActionSupportStrutsAction类扩展您的动作,如清单1所示:1.ActionSupportpackagepackageimportimportimportjavax.servlet.http.HttpServletRequest;importimportorg.apache.struts.action.ActionErrors;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionForward;importorg.apache.struts.action.ActionMapping;importimportimportimportpublicclassSearchSubmitextendsActionSupportpublicexecute(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletExceptionDynaActionFormsearchForm=(DynaActionForm)form;Stringisbn=(String)searchForm.get("isbn");//theoldfashion//BookServicebookService=newApplicationContextctx= BookServicebookService(BookService) Bookbook=if(null==book)ActionErrorserrors=newActionErrors();}request.setAttribute("book",book);}}(1)SpringActionSupportStruts的Action类进行扩展,创建了一个新的Action。在(2)处,我使用getWebApplicationContext()方法获得一个ApplicationContext。为了获得业务服务,我使用在(2)处获得的环境在(3)处查找一个Springbean。StrutsSpringSpring,StrutsSpringSpringAOP的优势。当使用多重独立的Spring环境时,这种技术可能有用,但是在大多数情况下,这种方法不如另外两种方法合适。2.将Spring从Struts动作中分离是一个更巧妙的设计选择。分离的一种方法是使用org.springframework.web.struts.DelegatingRequestProcessorStrutsRequestProcessor处理程序,如清单2所示:2.SpringDelegatingRequestProcessor<?xml<?xmlversion="1.0"encoding="ISO-8859-1"<!DOCTYPEstruts-config"-//ApacheSoftwareFoundation//DTDStrutsConfiguration1.1//EN""/struts/dtds/struts-config_1_1.dtd"><form-beanname="searchForm" <controllercontrollerDelegatingRequestProcessorStrutsRequestProcessor。下一步是在我的Spring配置文件中注册该动作,如清单3所示:3.Spring<!DOCTYPEbeansPUBLIC"-//SPRING//DTD<beanname="/searchSubmit"<property<ref(1)beanstruts-config动作映射名称。SearchSubmit动作揭示了一个JavaBean属性,允许Spring在运行时填充属性,如清单4所示:4.JavaBeanStrutspackagepackageimportimportjavax.servlet.ServletException;importimportorg.apache.struts.action.Action;importorg.apache.struts.action.ActionError;importorg.apache.struts.action.ActionErrors;importorg.apache.struts.action.ActionForm;importimportimportimportpublicclassSearchSubmitextendsActionprivateBookServicebookService;publicBookServicegetBookService(){return}publicvoidsetBookService(BookServicebookService){|(1)this.bookService=bookService;}publicexecute(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletExceptionDynaActionFormsearchForm=(DynaActionForm)StringStringisbn=(String)Bookbook=getBookService().read(isbn.trim());if(null==book)ActionErrorserrors=newActionErrors();saveErrors(request,errors);}request.setAttribute("book",book);}}在清单4中,您可以了解到如何创建Struts动作。在(1)处,我创建了一个JavaBean属性。DelegatingRequestProcessorStrutsSpring管理,并且使您能够利用Sping的动作管理框架的所有优点。由于您的Struts动作注意不到Spring的存在,所以您不需要重写您的Struts代码就可以使用其他控制反转容器来替换掉Spring。DelegatingRequestProcessor方法的确比第一种方法好,但是仍然存在一些问题。如果您使用一个不同的RequestProcessorSpringDelegatingRequestProcessor。添加的代码会造成维护的麻烦并且将来StrutsRequestProcessor3.StrutSpringstruts-config动作映射中注册一个代理来实SpringStrutsSpringJavaBean属性,并为应用诸如Spring的AOP拦截器之类的特性带来了可能。5Action4struts-config有一些不同:清单5.Spring整合的委托方法<?xmlversion="1.0"encoding="ISO-8859-1"<!DOCTYPEstruts-config"-//ApacheSoftwareFoundation//DTDStrutsConfiguration1.1//EN""/struts/dtds/struts-config_1_1.dtd"><form-beanname="searchForm" type="org.springframework.web.struts.DelegatingActionProxy"|(1)5struts-config.xmlSpring代理类的名称,而不是声明动作的类名,如(1)处所示。DelegatingActionProxy类使用动作映射名称查找Spring环境中的动作。这就是我们使用ContextLoaderPlugIn声明的环境。StrutsSpringbean6bean的名称属性(在这个例子中是"/searchSubmit")简单地创建了一个bean。这个动作的JavaBean属性像任何Springbean一样被填充:6.SpringStruts<!DOCTYPEbeansPUBLIC"-//SPRING//DTD<beanname="/searchSubmit"<property<ref<ref动作委托解决方法是这三种方法中最好的。StrutsSpringSpring应用程序中。RequestProcessor的改变不会影响它,并且它可以利用SpringAOP特性的优点。SpringStrutsSpring给动作补充更强的活力。例SpringStruts动作时,<beaninit-method属性被用于运行一个方法。类似地,在从容器中删除bean之前,destroy-method属性执行一个方法。这些方法是管理昂贵对象的好办法,它们以一种与Servlet生命周期相同的方式进行管理。前面提到过,通过将Struts动作委托给Spring框架而整合Struts和Spring的一个主要的优点是:您可以将SpringAOPStrutsSpringStruts动作,您可以用最小的代价处理SpringStruts动作。为了7Struts7.packagepackageimportimportpublicclassLoggingInterceptorimplementsMethodBeforeAdvicepublicvoidbefore(Methodmethod,Object[]objects,Objecto)throws{System.out.println("logging}}这个拦截器非常简单。before()方法在拦截点中每个方法之前运行。在本例中,它打印出一句话,其实它可以做您想做的任何事。下一步就是在Spring
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗集团用药管理办法
- 消费者行为分析与教育方案设计
- 编码安全评估方法-洞察及研究
- 厦门行政执法管理办法
- 任务驱动活动对素养提升的影响与策略
- 医疗通信安全管理办法
- 学科交叉研究面临的挑战与解决路径
- 国有企业中介服务机构选聘流程与标准
- 农业综合资金管理办法
- 城乡融合:矿山生态修复规划策略研究
- 2024年人类对外星生命的深入探索
- 造谣法律声明书范本
- (完整word版)高中英语3500词汇表
- 输变电工程档案管理归档要求
- SYB创业培训游戏模块2课件
- 兽医传染病学(山东联盟)智慧树知到答案章节测试2023年青岛农业大学
- 肠系膜脉管系统肿瘤的诊断
- 爆破工程技考核试卷
- GB/T 35273-2020信息安全技术个人信息安全规范
- GB 18068-2000水泥厂卫生防护距离标准
- 教师调动登记表(模板)
评论
0/150
提交评论