在实际项目中,Struts2往往并不是独立工作的,是需要整合到Spring当中,由Spring容器去管理Action的生成销毁,以及与业务类Service的绑定。
也就是说struts2与struts1整合到spring中都是一样的,都是阻止struts自己去产生Action,而是去Spring中获取配置好的Action.
整合步骤:
1、建立Web工程;
2、导入struts2和spring的jar包
3、将书写好的Action配置在Spring容器中
4、剥夺Struts2产生Action的权利
5、让容器启动的时候预加载Spring容器。
导入jar包
Struts2的jar包:
只需要导入Struts2的基本jar包就可以了。
Spring的jar包相当的多,如何寻找?
-----到struts2的下载包的lib中就可以看到整合它所需要的Spring的jar包:
最后添加一个扩展包
将Action配置在Spring容器中
其中id的名字可以任意命名,但是要与在struts.xml中action的class保持一致。
剥夺Struts2产生Action的权利
Struts2中剥夺产生Action,让核心控制器去spring容器中寻找Action的代码非常简单。只需要在struts.xml中配置常量就可以了。
<constant name="struts.objectFactory" value="spring">
</constant>
Web容器预加载Spring
其实现方式与以前struts1中讲解的完全一样,使用spring提供的上下文监听器就可以了。
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>
contextConfigLocation
</param-name>
<param-value>
/WEB-INF/classes/applicationContext.xml
</param-value>
</context-param>