Spring与Struts整合实战:三种方法解析
需积分: 3 61 浏览量
更新于2024-12-29
收藏 43KB DOC 举报
"Spring与Struts整合的三种方式实例"
在Java Web开发中,Spring和Struts是两个非常流行的框架,Spring提供了依赖注入和事务管理等高级功能,而Struts则专注于MVC架构中的控制器层。当需要将这两个框架集成到同一个项目中时,有多种方法可以实现它们之间的协同工作。以下是Spring与Struts整合的三种方式:
1. 通过Spring的`ActionSupport`类:
这种方式下,Action类不再直接继承自Struts的`Action`类,而是继承Spring的`ActionSupport`类。`ActionSupport`类提供了对Spring容器的访问,允许Action在执行时获取Spring的`ApplicationContext`。然而,这种方式的缺点是Action类与Spring紧密耦合,Action不在Spring的管理范围内,无法处理一个Action类中包含多个动作的情况。集成步骤包括添加Spring和Struts的相关库,配置Struts的`struts-config.xml`文件以注册`ContextLoaderPlugIn`插件,并在Action中通过`ActionSupport`的`getWebApplicationContext()`方法获取ApplicationContext来注入服务。
```java
// (1)
public class LoginAction extends ActionSupport {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;
// TODO Auto-generated method stub
// (2) 使用getWebApplicationContext()获取ApplicationContext
ApplicationContext context = getWebApplicationContext();
// (3) 通过ApplicationContext查找并使用Spring Bean
UserService userService = (UserService) context.getBean("userService");
// ...
}
}
```
2. 通过Spring的`DelegatingRequestProcessor`类:
这种方式下,Struts的请求处理器被Spring的`DelegatingRequestProcessor`替代,使得请求在到达Action之前先经过Spring,从而实现依赖注入。这样,Action类可以完全独立于Spring,由Spring来管理和控制。配置上,需要在Struts的`web.xml`中替换默认的`RequestProcessor`,并在`struts-config.xml`中配置Spring的`spring-struts`标签。
3. 通过Spring的`DelegatingActionProxy`类:
这是Spring提供的另一种集成方式,它通过代理模式实现了Struts Action的委托。在Struts的配置文件中,Action配置会引用Spring中的Bean,使得每次调用Action时,实际上是调用了Spring容器中的Bean。这种方式使Action完全在Spring的管理之下,降低了耦合度,同时支持AOP特性。配置上,需要在`struts-config.xml`中使用`action-proxy`标签,并指定引用的Spring Bean。
每种整合方式都有其适用场景和优缺点,选择哪种方式取决于项目需求和团队的技术栈。例如,如果希望保持Action类的独立性,可能更适合使用`DelegatingRequestProcessor`或`DelegatingActionProxy`。在实际应用中,开发者需要根据项目的具体需求,权衡这些集成方式的灵活性、可维护性和性能等因素来做出决策。
2008-09-07 上传
2010-01-23 上传
2008-01-06 上传
2009-03-02 上传
2011-02-11 上传
2011-04-06 上传
2009-01-04 上传
2014-10-20 上传
2018-12-17 上传
chunlin304
- 粉丝: 5
- 资源: 3
最新资源
- 【Unity-Demo】泡泡龙Demo两个.zip
- node-routeros:用于NodeJS的Mikrotik Routerboard RouterOS API
- 金融app 消费流水页面ui .sketch素材下载
- 人事与薪酬行为规范(非班员类)评分标准
- grunt-svn-control
- [信息办公]Global Office网络办公系统_ttoa.rar
- 支持向量机算法区分僵尸网络DGA家族.zip
- Arcgis二调符号库.zip
- XX公司进货检验员行为标准
- ContentManagement_NodeJS:带有NodeJS的内容管理系统
- image-manipulation:计算机视觉研究人员可以使用这些代码执行琐碎但非常频繁使用的任务
- winky_blog:博客
- BC260YCN (2).zip
- SAO Utils Plugins extend,配合SAO Utils,Windows桌面显示农历日期与股票信息的插件
- XX公司跟模员行为标准
- react-data-grid:用于React的数据网格