spring整合Struts2


Spring整合Struts的目的


    Spring是一个IOC框架(或者说是一个ioc容器)。Ioc的思想是实现组件之间的解耦。在web程序中如果使用Struts2作为mvc框架,那么怎么实现action和业务层的解耦呢?这就是spring整合Struts2的目的所在。


步骤:


1.导入必要的类库

要使用Spring整合Struts2框架,除了需要导入SpringStruts2框架必要的类库外,还必须导入支持整合的特定类库。

1)导入Spring框架的必要及特定类库。

Spring 3.0 web libaralies

2)导入Struts2框架必要及特定的类库。

Struts2 spring libraries

2.配置web.xml文件。

1)配置一个StrutsPrepareAndExecuteFilter过滤器。(通过myeclipse添加Struts2特性的时候可以自动生成


2)配置一个listener来完成加载Spring配置文件的功能。

<listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

3)通过context-param指定特定的配置文件。

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>


3.修改Struts2框架的Action类

使用Spring整合Struts2框架的目的就是将Struts2Action实例交给Spring框架的IOC容器进行管理。使Action和具体的业务实现类解耦。

在action中声明私有属性并且提供setter和getter方法

private UserBiz userBiz;

setter getter方法省略


4.修改struts.xml文件:

Spring框架整合Struts2框架后,Struts2Action将在IOC容器中被实例化及装配。为了让Strut2框架“知晓”这一信息,需要在struts.properties文件中配置Struts2的常量。

<constant name="struts.objectFactory" value="spring"></constant>

注意,如果使用Spring整合Struts2,那么struts.xml文件中的<action>元素的类型已经不再是该Action对应的实际类型,而只要是合法的标记符即可,将于applicationContext.xml中的Actionbeanid对应。

推荐struts.xml文件中的class不使用完整的类名,而仅使用去掉包名的类名。这并不是规范,是大多数开发人员的习惯,以此提高可读性。

5.修改applicationContext.xml文件:

Spring整合struts2后,struts2Action实例必须使用Spring框架的IOC容器进行实例化和装配。

注意strut2Action类必须制定scope=”prototype”,因为Action类通过实例封装了请求参数的其他属性,如果不指定scope=”prototype”,则默认为单例范围,那么将出现多个请求只实例化一个Action实例的情况,这将引起混乱。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值