版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、现在书写struts config.xml文件: applicationContext.xml配置文件: 需要说明的是, 由丁spring dtd规定id不能有/,所以我们用name定义path,并且,springbean的name和struts-config.xml中的path一致使用DelegatingActionProxy的好处就在丁你可以用不用任何spring特定的类编写Struts Action,这个方法也有不足之处, 就是不太直观,因为所有路径都映射到同一个类了对丁这种情况,spring也有解决方法,就是使用请求委托首先,为struts-config.xml增加controller
2、然后,修改我们的path定义位这样,乂和我们单独使用struts的时候一样了 ,但内部还是让spring取代理我 们的真正的action需要说明的是,这里的type其实是个摆设,完全可以使用,写上是为了解决我们上面提到的“不够直观 的”的问题spring与struts1.2怎么整合01先在struts-config.xml的最后添加插件配置代码02把struts-config.xml中的action的type改为type=org.springframework.web.struts.DelegatingActionProxy当然你也可以添加controller备注: 添加controller在
3、的后面,这样就不用不用写type届性03在applicationContext.xml中添加action的代码,也就是 配置spring来 实例化上一步中被删除的Action类.Spring通过org.springframework.web.struts.DelegatingActionProxy这个类,然后根据动态获取的请求路径/login(通过在execute(form,request,reponse)中调用HttpServletRequest.getRequestURI()来获取)和Spring配置文件中的来将Spring管理下的Struts Action类和提交的路径匹配起来,这些就是
4、关于转交控制权的配置内容.最后调用用户自己开发 的Action并返回来完成业务逻辑.spring2.0与struts1.x整合三种方法!1. StrutsStruts是应用最广的Java Web开发框架, 主要是因为它是最先发行的几个框 架之一(2001年6月)。这个框架由Craig McClanahan开发完成,现在作为Apache软件基金会的一个开源项目。当时,它极大地简化了JSP/Servlet编程范例并且赢得了大多数正在使用私人框架的开发人员的亲睐。它简化了编程 模型,它是开源的,它具有一个庞大的社区,这些都使得这个项目快速成长,同 时变得越来越流行。要将Struts与Spring集成
5、,你有两个选择:一:配置Spring将Action作为bean托管,使用ContextLoaderPlugin,并 且在Spring context中设置依赖关系。二:继承Spring的ActionSupport类并且 使用getWebApplicationContext()方法获取Spring管理的bean。1.1. ContextLoaderPluginContextLoaderPlugin是Struts 1.1+的插件,用来为Struts的ActionServlet加载Spring context文件。 这个context引用WebApplicationContext(由ContextL
6、oaderListener加载)作为它的父类。 默认的context文件是映射的Servlet的名字,加上-servlet.xml后缀。如果ActionServlet在web.xml里面的定义是action,那么默认的文件就是/WEB-INF/action-servlet.xml。要配置这个插件,请把下面的XML贴到struts-config.xml文件中plug-ins部分的底端: context配置文件的位置可以通过contextConfigLocation届性来自定义。Xml代码复制代码 你也可以使用这个插件加载所有的配置文件,这在使用测试工具(例如StrutsTestCase )的时候
7、特别有用。StrutsTestCase的MockStrutsTestCase不会在启动的时候初始化Listener,将你所有的配置文件放在plug-in里面是一种解决方案。(有个 已记录的bug就是针对这个问题的,但是已经被标记为 “无须改正”)。在struts-config.xml中配置好插件以后,你可以配置Sping来管理Action。Spring (1.1.3以后的版本)提供下面两种方式:一:用Spring的DelegatingRequestProcessor重载Struts默认的RequestProcessor。:将的type届性设为DelegatingActionProxy。这两种方
8、法都允许你在action-context.xml文件中管理你的Action以及依赖关系。连接struts-config.xml和action-servlet.xml中的Action的桥 梁 是action-mapping的“path和bean的“nam$。如果你在struts-config.xml文件中有如下配置:你必须在action-servlet.xml中将Action bean的名字定义为“/users 1.1.1. DelegatingRequestProcessor为了在struts-config.xml文件中配置DelegatingRequestProcessor,你需要 重载元素
9、的“processorClass ”届性。下面的几行应该 放 在元素的后面。Xml代码 增加这些设置之后,不管你查询任何类型的Action , Sping都自动在它的context配置文件中寻找。实际上,你甚至 不需要指定类型。下面两个代码片断都可以工作:如果你使用Struts的modules特性,你的bean命名必须含有module的前 缀。举个例子,如果一个Action的定义为,而且它的module前缀为“ admin”,那么它应该对应名为的bean。Note如果你在Struts应用中使用了Tiles,你需要配置为DelegatingTilesRequestProcessor。1.1.2.
10、 DelegatingActionProxy如果你有一个自定义的RequestProcessor并且不能够使用DelegatingRequestProcessor或者DelegatingTilesRequestProcessor,你可 以使用DelegatingActionProxy作为你action-mapping中的类型。Xml代码复制代码 action-servlet.xml文件中的bean定义依然不变,不管你使用了自定义的RequestProcessor还是DelegatingActionProxy。如果你把Action定义在Spring的context文件里,那么Spring bea
11、n容器的 所有特性都可用了:比如,依赖注入,再比如,为每个请求初始化一个新的Action实例。如果要使用这个特性,Action bean定义中需要声明scope=prototype。Xml代码复制代码I. 2. ActionSupport类需要在web.xml里面加载spring配置文件如:contextConfigLocation/WEB-INF/classes/applicationContext*.xml正如前面提到的,你可以使用WebApplicationContextUtils类从ServletContext中获得WebApplicationContext。另一个简单的办法是继承Sp
12、ring的Action类。举个例子,除了继承Struts的Action之外,你也可 以继承Spring的ActionSupport类。ActionSupport类提供了一些便利的方法,例如getWebApplicationContext()。下面的例子展示了如何在Action中使用它:Java代码复制代码1. public class UserAction extends DispatchActionSupport 2.2.public ActionForward execute(ActionMapping mapping,3.ActionForm form,4.HttpServletRequ
13、est request,5.HttpServletResponse response)throws Exception 6.if (log.isDebugEnabled() 7.log.debug(entering delete method.);8.9.WebApplicationContextctx = getWebApplicationContext();II.UserManager mgr = (UserManager)ctx.getBean(userManager);12./ talk to manager for business logic13.return mapping.fi
14、ndForward(success);14.15. public class UserAction extends DispatchActionSupport public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throwsException (if (log.isDebugEnabled() (log.debug(entering delete method.);WebApplicationCont
15、ext ctx = getWebApplicationContext();UserManager mgr = (UserManager) ctx.getBean(userManager);/ talk to manager for business logicreturn mapping.findForward(success);Spring包含了所有标准Struts Action的子类-Spring版本在类名末尾附加 了Support :ActionSupport,DispatchActionSupport,LookupDispatchActionSupportMappingDispatch
16、ActionSupport你应该选择最适合你项目的集成方式。 继承使得你的代码更可靠,并且你确切地知道依赖关系是如何被解析的。另一方面,使用ContextLoaderPlugin允许你 方便地在context XML文件里面增加新的 依赖关系。这两种集成方法,不管哪 一种Spring都提供了相当好用的选项。整合方式:将动作管理委托给Spring将Struts的动作管理委托给Spring.使用Struts-config.xml的动态映射中注册一个代理.代理负责在Spring中找到Struts的动作.由于动作在Spring的控制之下所以Spring可以对Action进行javaBean的注入和Sp
17、ring的一些Aop使用需要发生改变的配置有:Struts-config.xml:Java代码 _.5.global-forwards /.2.21.Action中的代码:Java代码 _1.publicpublic classclass UserAction extendsextends MappingDispatchAction (2./使用普遍依赖注入方式3.UserService userService;4.publicpublic voidvoid setUserService(UserService
18、 userService) (5.this.this.userService = userService;6.7.publicpublic ActionForward login(ActionMapping mapping, ActionForm form,8.HttpServletRequest request, HttpServletResponse response)9.throwsthrows Exception (10.String uname = request.getParameter(uname);11.String upass = request.getParameter(u
19、pass);12.直接使用userService13.User user = userService.findByName(uname, upass);14.ifif (user= nullnull) (15.request.setAttribute( error,对不起,您输入的用户名或者密码错误!);16.16.returnreturn mapping.findForward( failure);17. elseelse (18.request.getSession().setAttribute( user, user);19.returnreturn mapping.findForwar
20、d( success);2.这个配置只于传统的struts-config的配置.这里使用的是Spring的注册代理.而不是直接使用相应Action类的完整类名.这里使用的ContextLoaderPlugIn.声明的环境。通过DelegatingActionProxy使用动作映射名/login在Spring环境中找到相应的Action.所以我们需要在Spring环境中注册一个Struts的动 作:Java代码 -1.2.3.这个方法可以说是多数人认可最好的方法:这个方法的使用只在配置文件中着手不需要对源码进行修改.将struts动作放置到Spring中使得其享受了Sprin
21、g提供的各种好处.一旦让Spring控制您的Struts动作,您就可以使用Spring给动作补充更强的活力。例如,没有Spring的话,所有的Struts动作都必须是线 程安全的。如果您设置标记的singleton属性为false,那么不管用何种方法,您的应用程序都将在每一个请求上有一个新生成的动作对象。您也可以利用Spring的生命周期方法。例如,当实例化Struts动作时,标记的init-method属性被用于运行一个 方法。类似地,在从容器中删除bean之前,destroy-method属性执行一个方法.第一种:通过web.xml配置加载spring上下文环境,其配置方式如下:web.x
22、mlcontextConfigLocation/WEB-INF/applicationContext.xml通过listener加载org.springframework.web.context.ContextLoaderListener或者利用severlet类加载 contextorg.springframework.web.context.ContextLoaderServlet1第二种方式:使用Struts插件在struts-config.xml中这两种配置的明显区别就是,第一种方式可以配置多个spring配置文件。struts1 spring框架整合注意事项2010-08-23 17
23、:25今天花了一天时间才配置成功,写个struts1,spring框架整合的 注意事项(不用就忘啊)基于MyEclipse5.5GA1创建工程导入struts1.1框架Struts Support for MyEdipse Web Projectproj ect Struts devJ.pmeiiLFini sh2.导入spring框架注意事项导入spring 1.2和strutsl.1匹配(好像是这样)选择AOP,core,ORM-hibernate3(后面要整合hibernate框架),web四个包,jar文件选择copyto project folderproject:W电hro戏oll
24、ei:ttit/MRcatServlet三peEficMig: 24Strutscntisjath:|/1切1/眈*=-*瑚鼻Jtml.Jti-uts spacifi cati on::. Stmts 1.3 C+)Struts 1. 1 ( Strut? L. 2 icti&nServletnaua. aeti onUKL patterndu O/do/*Rase p ackge forzievr classes:00m. Li口或str utsDfault appli c tti onsresQixrcfrs:cm.Lius., str uta. kppli cmti由藤espiirutM点击next选择spring配置文件存放路径,名称(这里默认就好)finish% Add Sprims CapaliilitiBiAdd Spring CapabilitiesAdd Spring baan ccnfi guration fil&am
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地下人防工程培训
- 代工供应链管理方案
- 畜禽养殖粪污处置项目竣工环境保护验收监测报告
- 持续做好地质灾害遥感隐患识别实施方案
- 成本核算管理制度汇编
- 高效电池项目环境影响报告书
- 高危化工岗位安全履职标准培训
- 钢筋绑扎安装施工方案
- ERP系统建设整体规划方案
- 后勤物资仓储年度工作总结
- 高考数学三角函数专题知识训练100题含答案(5份)
- 业务介绍费合同或协议
- 《产科危急重症早期识别中国专家共识(2024年版)》解读课件
- 砧板刀具分色管理制度
- 卡通形象吉祥物设计过程
- 口腔分类分级管理制度
- 养生馆承包合同协议书
- SL631水利水电工程单元工程施工质量验收标准第1部分:土石方工程
- 2025中考重点中学自主招生数学试题及答案详解
- 虚拟电厂运营
- 隧道防水及二衬施工验收要求
评论
0/150
提交评论