一、 Struts 2框架整合Spring步驟
1、 復制文件。復制struts2-spring-plugin-x-x-x.jar和spring.jar到WEB-INF/lib目錄下。其中的x對應了Spring的版本號。還需要復制commons-logging.jar文件到WEB-INF/lib目錄下。
2、 配置struts.objectFactory屬性值。在struts.properties中設置struts.objectFactory屬性值:struts.objectFactory = spring
或者在XML文件中進行常量配置:
<struts>
<constant name="struts.objectFactory" value="spring" />
...
</struts>
3、 配置Spring監聽器。在web.xml文件中增加如下內容:
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
4、 Spring配置文件。默認情況下,Spring配置文件為applicationContext.xml,該文件需要保存在Web應用的WEB-INF目錄下。內容示例如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC
"-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean id="personManager" class="com.acme.PersonManager"/>
</beans>
開發者實際上可以使用多個Spring配置文件,在web.xml中進行下列設置,從而使Spring的ApplicationContext通過匹配所給定模式的文件來初始化對象:
<!-- 用來定位Spring XML文件的上下文配置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml
</param-value>
</context-param>
5、 修改Struts配置文件。Struts 2框架整合Spring框架,需要在Struts配置文件中有所改變,下面是一個示例:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml"/>
<package name="default" extends="struts-default">
<action name="foo" class="com.acme.Foo">
<result>foo.ftl</result>
</action>
</package>
<package name="secure" namespace="/secure" extends="default">
<action name="bar" class="bar">
<result>bar.ftl</result>
</action>
</package>
</struts>
該配置文件中定義了兩個Action配置:foo是一個標准的Struts 2框架Action配置,指定了Action實現類為com.acme.Foo;bar對應的class並不存在,那麼框架將在Spring配置文件中查找id屬性為“bar”的定義,該配置文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC
"-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean id="bar" class="com.my.BarClass" singleton="false"/>
...
</beans>