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