Spring整合Struts的三种方式:ActionSupport、DelegatingRequestProcessor与全权委...

需积分: 10 10 下载量 92 浏览量 更新于2024-12-24 收藏 42KB DOC 举报
本文将深入探讨Spring框架与Struts框架的整合,主要介绍三种常见的整合方式:使用Spring的ActionSupport、Spring的DelegatingRequestProcessor类以及全权委托Spring。 首先,整合的第一步是在Struts应用中引入Spring环境。这通常通过在`struts-config.xml`文件中添加Spring的`ContextLoaderPlugIn`插件来实现。这个插件的配置如下: ```xml <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/> </plug-in> ``` 这样做的好处是,Spring的配置文件`applicationContext.xml`可以直接在`WEB-INF`目录下引用,避免了在`web.xml`中进行冗余的配置。确保`applicationContext.xml`文件在此目录下,以便Spring能正确地加载并管理应用的bean。 1. 使用Spring的ActionSupport Spring的`ActionSupport`是一个强大的工具,它扩展自`org.apache.struts.action.Action`。通过继承`ActionSupport`,子类可以自动获取到`WebApplicationContext`实例。例如,在`LoginAction`类中,我们看到这样的代码片段: ```java public class LoginAction extends org.springframework.web.struts.ActionSupport { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { LoginForm loginForm = (LoginForm) form; // 示例代码 WebApplicationContext ctx = this.getWebApplicationContext(); // 获取Spring上下文 LoginDao loginDao = (LoginDao) ctx.getBean("loginDao"); // 通过Spring获取DAO实例 } ``` 这样,`LoginAction`可以直接访问Spring中的Bean,比如数据库访问层(`LoginDao`),实现了业务逻辑与Spring容器的解耦。 2. 使用Spring的DelegatingRequestProcessor `DelegatingRequestProcessor`是另一种整合方式,它允许Struts的请求处理器调用Spring的AOP(面向切面编程)来处理业务逻辑。这种方式提供了更细粒度的控制,可以根据需要选择性地拦截和处理请求。然而,具体实现会涉及到更多的代码配置和AOP的概念。 3. 全权委托Spring 最后一种整合策略是将Struts的所有控制权完全交给Spring,这意味着Struts的Action、Interceptor和PlugIn等组件都由Spring管理。这种模式下,Struts的行为和功能可能会更依赖于Spring的配置和扩展,但能够充分利用Spring的强大功能,如依赖注入、事务管理和AOP等。 总结起来,这三种整合方式各有优缺点,开发者可以根据项目需求选择合适的整合方式。无论哪种方式,核心都是利用Spring来简化应用的管理,提高代码的可维护性和灵活性。