1、在第一种的集成方式中,通过struts2-spring-plugin-2.1.8.1.jar这个插件让spring自动产生对应需要的action类,不需要在对应的spring.xml文件中进行配置,这种方法不能对action进行精确的管理和控制
第二种方式,我们在spring的xml配置文件中对action进行配置和管理
在第一种方式的基础上,我们新建一个applicationContext-action.xml文件
我们在该配置文件中,需要对action进行配置
文件内容如下所示:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<!--name="userService 必须和AddUserAction中的 private UserService userService; 一一对应 -->
<!-- ref="userService"必须和applicationContext-service.xml中<bean id="userService" 一一对应 -->
<!-- 为了保证一个action对应一个线程,这里必须要配置scope="prototype" -->
<bean id="addUserAction" class="com.weiyuan.test.web.action.AddUserAction" scope="prototype">
<property name="userService" ref="userService"/>
</bean>
</beans>
上面有几点必须要注意的:
<!--name="userService 必须和AddUserAction中的 private UserService userService; 一一对应 -->
<!-- ref="userService"必须和applicationContext-service.xml中<bean id="userService" 一一对应 -->
<!-- 为了保证一个action对应一个线程,这里必须要配置scope="prototype" -->
还必须把上面的配置文件加载到applicationContext.xml中
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<import resource="applicationContext-service.xml"/>
<import resource="applicationContext-action.xml"/>
<import resource="applicationContext-dao.xml"/>
<import resource="applicationContext-common.xml"/>
</beans>
2、第二要修改action在struct2中的配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>
<constant name="struts.i18n.encoding" value="GB18030"/>
<constant name="struts.configuration.xml.reload" value="true"/>
<constant name="struts.devMode" value="true"/>
<package name="user" extends="struts-default" >
<action name="add" class="com.weiyuan.test.web.action.AddUserAction">
<result name="sucess">/add_success.jsp</result>
</action>
</package>
</struts>
需要将 <action name="add" class="com.weiyuan.test.web.action.AddUserAction">修改为下面的形式
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>
<constant name="struts.i18n.encoding" value="GB18030"/>
<constant name="struts.configuration.xml.reload" value="true"/>
<constant name="struts.devMode" value="true"/>
<package name="user" extends="struts-default" >
<!-- class="addUserAction">必须和applicationContext-action.xml中配置的<bean id="addUserAction" 一一对应-->
<action name="add" class="addUserAction">
<result name="sucess">/add_success.jsp</result>
</action>
</package>
</struts>
如果这里不进行修改,还是按照第一种方式spring利用 com.weiyuan.test.web.action.AddUserAction产生对应的action对象,就会有问题 经过上面的修改就可以,在项目中我们按照第二种方式集成
程序代码的下载地址是:https://pan.baidu.com/s/1jIckYea