将struts2的action付给spring管理及注意事项

将struts2的action交给spring管理及注意事项

 

将struts2中的action交给spring管理

1.xml方式

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">

	<bean id="testAction" class="com.je.app.web.JeTestAction" scope="prototype"></bean>	

</beans>

 

 sturts.xml

 

<?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>
	<package name="je" extends="struts-default" namespace="/je">
	
		<!-- Test-->
		<action name="test" class="testAction">
			<result name="invalid.token">/pages/je/test.jsp</result>
			
		</action>
	</package>
</struts>

 

 

2.注解方式

JeTestAction.java

 

/**
 * JeTestAction 
 * @author wkkyo
 */
@Controller
@Scope("prototype")
public class JeTestAction extends ActionSupport {

}
 

 

  sturts.xml

 

<?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>
	<package name="je" extends="struts-default" namespace="/je">
	
		<!-- Test-->
		<action name="test" class="jeTestAction">
			<result name="invalid.token">/pages/je/test.jsp</result>
			
		</action>
	</package>
</struts>
 

注意:如果没有指定scope就会出现action属性保存(验证)后一直存在的问题,导致后面的保存(验证)根本没有进行

所以在spring中配置action时要指定scope属性为prototype

配置文件中加入scope="prototype"

 

<bean id="testAction" class="com.je.app.web.JeTestAction" scope="prototype"></bean>

 

注解的话要加上@Scope("prototype")


这样就ok了

默认的spring的bean的周期是单态的(Singleton)

对于每一次请求就不会生成新的实例

 

1 楼 天塔上的猫 2011-11-08  
恩 不错的文档,不给是不是应该把web.xml这个也贴出来呢
是不是应该在里面那配个Listener?将acton的初始化也交给spring来管理起来,望斧正
2 楼 wkkyo 2012-01-31  
天塔上的猫 写道
恩 不错的文档,不给是不是应该把web.xml这个也贴出来呢
是不是应该在里面那配个Listener?将acton的初始化也交给spring来管理起来,望斧正

我这个好像就是把action的初始化交给spring吧,不太明白你的意思
3 楼 小米虫 2012-03-20  
在struts中配置的acion,将其class指向在spring定义的bean,结果我运行时提示找不到该类。jar包我都引进来了