关于SSH集成方案的探讨
1.Spring 与 Struts的集成
将Struts中的Action交给Spring负责管理,利用接口进行依赖注入,配置Action的时候不用id,而用name,
<bean name="/login"
class="com.myxx520.user.web.actions.LoginAction">
<property name="userManager" ref="userManager"></property>
</bean>
在Struts-config.xml中配置
<action path="/login"
type="org.springframework.web.struts.DelegatingActionProxy"
name="loginForm" scope="request">
<forward name="scuess" path="/scuess.jsp"></forward>
</action>
在web.xml中配置
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
<!--加载多个spring配置文件 -->
/WEB-INF/applicationContext-beans.xml,/WEB-INF/applicationContext-actions.xml
</param-value>
</context-param>
<!---这个声明决定了哪些 Spring XML 配置文件将要被加载-->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
2.Spring 与 Hibernate的整合
DAOImpl必须继承HibernateDaoSupport-
DAOImpl的Spring配置文件中
class=programlisting<property name="sessionFactory" ref="mySessionFactory"/>
在Spring中配置
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<!-- 配置事务的传播特性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="modify*" propagation="REQUIRED"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- 配置哪些类,哪些方法使用事务 -->
<aop:config>
<aop:pointcut id="allManagerMethod" expression="execution(* com.userManager.*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/>
</aop:config>