spring 整合struts
1.例子:未被spring整合
struts.xml 的配置文件
<constant name="struts.enable.DynamicMethodInvocation" value="true" /> <constant name="struts.configuration.xml.reload" value="true"/> <!--配置扩展名 .do--> <constant name="struts.action.extension" value="do"></constant> <package name="default" namespace="/" extends="struts-default"> <!-- {1} 代表第一个* {2} 代表第二个* --> <action name="*_*" class="com.test.controller.{1}Action" method="{2}"> <result name="success">index.jsp</result> </action> </package>
注意这个配置,全类名。 struts 通过actionMaping 的配置找到这个类
测试:调用com.test.controller 包下的StudentAction 这个类的doGetStudentInfo()方法
前台调用这个action的方式 就是
注意:这里是Student首字母大写,是StudentAction 的前半部分
2. 例子:spring整合之后
struts.xml 的配置文件
<struts> <!--由spring 取代struts 创建对象的实例 --> <constant name="struts.objectFactory" value="spring" /> <!--配置spring自动装配实例--> <constant name="struts.objectFactory.spring.autoWire" value="true"></constant> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <constant name="struts.configuration.xml.reload" value="true"/> <!--配置扩展名 .do--> <constant name="struts.action.extension" value="do"></constant> <package name="default" namespace="/" extends="struts-default"> <action name="*_*" class="{1}Action" method="{2}"> <result name="success">index.jsp</result> </action> </package> <!-- <include file="example.xml"/> --> </struts>
注意这个地方:已经变成了spring 自动创建的beanid,这里自动创建的beanid 是通过注解生成的
这个注解生成的beanid 是studentAction ,注意这里的首字母是小写,这是spring创建实例的时候转化的。
测试:前台进行访问
报错:原因,时候应为这时候要调用的action 实例名已经是studenAction 而不是StudentAction
正确。
此时spring配置文件不用特别的设置配置,已经将spring 和 struts 整合完毕