快速业务通道

Spring和Struts整合的三种方式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

Spring和Struts整合的三种方式

时间:2011-04-26

1,使用Spring 的 ActionSupport

2,使用Spring 的 DelegatingRequestProcessor 类。

3,全权委托。

无论用那种方法来整合第一步就是要为struts来装载spring的应用环境。 就是在 struts 中加入一个插件。

struts-config.xml中

<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">   <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/> </plug-in>

spring 的配置文件被作为参数配置进来。这样可以省略对web.xml 文件中的配置。确保你的applicationContext.xml 在WEB-INF目录下面

1、使用Spring的ActionSupport .

Spring 的ActionSupport 继承至org.apache.struts.action.Action

ActionSupport的子类可以或得 WebApplicationContext类型的全局变量。通过getWebApplicationContext()可以获得这个变量。

这是一个 servlet 的代码:

public class LoginAction extends org.springframework.web.struts.ActionSupport { public ActionForward execute(ActionMapping mapping, ActionForm form,   HttpServletRequest request, HttpServletResponse response) {   LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub          //获得 WebApplicationContext 对象          WebApplicationContext ctx = this.getWebApplicationContext();   LoginDao dao = (LoginDao) ctx.getBean("loginDao");   User u = new User();   u.setName(loginForm.getName());   u.setPwd(loginForm.getPwd());   if(dao.checkLogin(u)){   return mapping.findForward("success");   }else{   return mapping.findForward("error");   } } } applicationContext.xml 中的配置 <beans> <bean id="loginDao" class="com.cao.dao.LoginDao"/> </beans>

这中配置方式同直接在web.xml文件配置差别不大。注意:Action继承自 org.springframework.web.struts.ActionSupport 使得struts和spring耦合在一起。

但实现了表示层和业务逻辑层的解耦(LoginDao dao = (LoginDao) ctx.getBean("loginDao"))。

Spring和Struts整合的三种方式(2)

时间:2011-04-26

2、使用Spring 的 DelegatingRequestProcessor 类

DelegatingRequestProcessor 继承自 org.apache.struts.action.RequestProcessor 并覆盖了里面的方法。

sturts-config.xml 中 

processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/> 通过 来替代

org.apache.struts.action.RequestProcessor 的请求处理。

public class LoginAction extends Action { //利用spring来注入这个对象。 private LoginDao dao ; public void setDao(LoginDao dao) {   System.out.println("执行注入");   this.dao = dao; } public LoginDao getDao() {   return dao; } public ActionForward execute(ActionMapping mapping, ActionForm form,   HttpServletRequest request, HttpServletResponse response) {   LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub   //这样一改这行代码似乎没有必要了。   //WebApplicationContext ctx = this.getWebApplicationContext();   //LoginDao dao = (LoginDao) ctx.getBean("loginDao");   User u = new User();   u.setName(loginForm.getName())

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号