Struts2.1.6与spring2.5.5集成

本文介绍如何通过添加struts2-spring-plugin-2.1.6.jar实现Struts2与Spring的集成。集成后,Struts2将Action控制器交给Spring创建和管理,通过Spring容器中的BeanID配置Action控制器。此外,还介绍了Struts2与Spring集成后的请求处理流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

把struts2-spring-plugin-2.1.6.jar添加到classpath中,struts2会自动扫描struts-plugin.xml文件,该文件自动注册了com.opensymphony.xwork2.ObjectFactory,完成和spring的集成。 (Struts2与Spring的集成,其实,只要一个JAR就可以自动完成两者的集成。 集成后,Struts2会把它自己的Action控制器交给Spring来创建和管理,需要在Spring配制文件中配制Action控制器Bean,并且在Struts2的配制文件中引用这个Action控制器Bean ID ,而不再用Action控制器的实现类了。而在集成前,是由Struts2框架自动创建和管理Action控制器对象)

Struts2与Spring完成集成后,客户请求的流程发生了微妙的一些变化(主要就是因为,Struts2的Action控制器交给了Spring来创建和管理了)。
Spring插件提供了一种伪Action,当我们在struts.xml文件中配置Action时,通常需要指定class属性,该属性就是用于创建Action实例的实现类。但Spring插件允许我们指定class属性时,不再指定Action的实际实现类,而是指向Spring容器中的Bean ID。
通过上面的方式,我们发现了这种整合策略的关键:当struts2将请求转发给指定的Action时,Struts2中的该Action只是一个“傀儡”,它只有一个代号,并没有指定实际的实现类,当然也不可能创建Action实例,而隐藏在该Action下的是Spring容器中的Actoin实例----它们才是真正处理用户请求的控制器。这就实现了让核心控制器调用Spring容器中的Action来处理用户请求。
在这种整合策略下,处理用户表示的Acton由Spring插件负责创建,但Spring插件创建Action实例时,并不是利用配置Action时指定的class属性来创建该Action实例,而是从Spring容器中取出对应的Bean实例完成创建。





注意这里的bean name是adminAction,再看Bitrac\src\admin.xml里的class="adminAction",Spring和Struts的结合点就在这里,后台处理这一结合的是struts2-spring-plugin-2.1.2.jar。如果不使用spring,在admin.xml中将是class="com.albertsong.bitrac.action.AdminAction"。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值