Spring整合Struts2

2018-05-16  本文已影响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>
上一篇下一篇

猜你喜欢

热点阅读