美文网首页
Spring整合Struts2

Spring整合Struts2

作者: 游牧族人 | 来源:发表于2018-05-16 13:25 被阅读60次

    Spring整合Struts2需要导入struts2-spring-plugin.jar文件。
    导入完成之后,struts2的所有类文件的初始化都交由spring容器管理。
    例如:
    在不使用spring之前,我们是这样配置struts2.xml文件的。

    struts.xml
    ...
    <package name="package" extends="struts-default">
            <action name="testAction" class="com.sun.TestAction">
                <result name="success">index.jsp</result>
            </action>
    </package>
    

    此时com.sun.TestAction类是由Struts2帮我们创建的。当我们使用Spring之后,需要将Action类的初始化工作转交给Spring,因此我们需要配置applicationContext.xml声明这些action对象。

    applicationContext.xml
    ...
    <bean id="testAction" class="com.sun.TestAction" scope="prototype"/>
    
    struts.xml
    ...
    <package name="package" extends="struts-default">
            <action name="testAction" class="testAction">
                <result name="success">index.jsp</result>
            </action>
    </package>
    

    当我们配置完spring.xml文件启动项目时,spring会自动将com.sun.TestAction放到容器中管理,注意此时action类的scope属性为prototype,因为struts2的每一次请求都会新建一个action进行处理。此时我们的struts.xml文件中对应class属性应该改为spring为我们配置好的,已经在容器中存在的testAction对象,不需要再由struts自己创建对象。

    web.xml
    ...
        <!--spring配置文件路径-->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml</param-value>
        </context-param>
    
        <!--spring监听器-->
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
    
        <!--struts过滤器-->
        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    

    相关文章

      网友评论

          本文标题:Spring整合Struts2

          本文链接:https://www.haomeiwen.com/subject/nbjpdftx.html