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 整合完毕

原文地址:https://www.cnblogs.com/blogxiao/p/7599647.html