关键点:
让Struts框架中的Action对象的创建交给Spring来完成。
- 由于Struts是基于拦截器的来实现的一种框架。
- Spring提供了一个ContextLoaderListener,该监听类实现了ServletContextListener接口。该类可以作为Listener使用,它会在创建时自动查找WEB-INF/下的applicationContext.xml文件。 (即可以在服务器启动的时候就加载Spring的IOC容器,不需要再采用硬编码的方式来获取对象了)
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 2. spring 配置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<!--多个application文件通过逗号分隔开 -->
<param-value>/WEB-INF/classes/applicationContext.xml,/WEB-INF/classes/... .xml</param-value>
<!-- 也可以将ApplicationContext.xml配置文件的路径写成如下格式前提是: 加载你的配置文件放在了src下的所有的 以bean开始的配置文件 ,多个bean.xml配置文件且不在同一目录下可以用逗号分隔开,如将某一个bean.xml文件放在xzx.action包下-->
<param-value>classpath:bean*.xml,classpath:xzx/action/bean*.xml</param-value>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
3. 在bean.xml中来配置相关Action对象。并依据在IOC容器中创建的Action相关的对象索引值(id属性值)替换掉struts.xml中的action标签中的class属性值即可
<struts>
<package name="xzx" extends="struts-default">
<action name="myAction" class="myaction" method="execute">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>