SSH框架整合

先导入Spring:

导入jar包:

在web.xml配置文件添加Spring 启动监听器

<!-- Spring监听器 -->
<listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
添加参数,设置Spring读取配置文件的名称:

<!-- 参数设置 -->
<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>classpath:applicationContext-*.xml</param-value>
</context-param>
———————————————————————————————————————————————————————

Spring整合Hibernate框架:

1、通过Spring提供 LocalSessionFactoryBean ,直接引入hibernate配置文件 ,在Spring容器中获得SessionFactory对象

<!-- 1、Spring管理Hibernate,使用LocalSessionFactoryBean取代HibernateSessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
	<property name="configLocation" value="classpath:hibernate.cfg.xml"/>
</bean>
2、创建session

<!-- 2、 通过sessionFactory创建session,在Spring中由HibernaTemplate封装session-->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
	<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
3、配置事物管理器transactionManager

<!-- 3、如果需要实现Spring的AOP声明式事务,则需要Spring提供事务管理器,所有session都是由sessionFactory创建的事务管理器需要控制sessionFactory -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" >
	<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
4、配置事务通知  事务由事务管理器提供

<!-- 4、配置事务通知  事务由事务管理器提供  -->	
<tx:advice id="advice" transaction-manager="transactionManager">
	<tx:attributes>
		<tx:method name="save*" propagation="REQUIRED"/>
	 	<tx:method name="delete*" propagation="REQUIRED"/>
	 	<tx:method name="update*" propagation="REQUIRED"/>
	 	<tx:method name="*" propagation="NEVER" read-only="true"/>
	</tx:attributes>
</tx:advice>
5、配置切入表达式

<aop:config>
	<aop:pointcut id="pointcut" expression="execution(* com.wjb.shop.service.impl.*.*(..))" />
	<aop:advisor advice-ref="advice" pointcut-ref="pointcut"/>
</aop:config>
——————————————————————————————————————————————————————
Spring整合Struts2框架:

注意:如果Struts没有与Spring整合则不要添加struts2-spring-plugin 添加后,反而创建Action的时候会报错.

1、在web.xml中添加过滤器

<!-- Struts2过滤器配置 -->
<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>*.action</url-pattern>
</filter-mapping>
2、添加struts2-spring-plugin

我们会发现struts2-spring-plugin只有一个类和一个struts-plugin.xml配置文件我们打开struts-plugin配置文件源码如下:struts-plugin.xml此配置文件在项目启动的时候会被加载

<struts>
    <bean type="com.opensymphony.xwork2.ObjectFactory" name="spring" class="org.apache.struts2.spring.StrutsSpringObjectFactory" />
    
    <!--  修改了创建Struts Action的工厂类,默认呢的配置在default.properties配置文件中 -->
    <constant name="struts.objectFactory" value="spring" />
    </package>    
</struts>

Spring整合Struts2

方式一:

<!-- 第一种 struts2 整合spring 方式, struts2自己管理Action -->
<action name="bookadd" class="cn.itcast.action.BookaddAction" /> 

Action 提供setBookService方法后,会自动找到 applicationContext.xml 配置的 id为bookService的Bean,完成注入

方式二:将Action 交给Spring管理

<!-- 第二种 将Action 交给Spring管理 -->
<!--bookaddAction并不是真实类名,只是指向Spring管理Action Bean的id   -->
<action name="bookadd" class="bookaddAction" />
在applicationContext.xml中加入

<!-- 加入Action Bean -->
<bean id="bookaddAction" class="cn.itcast.action.BookaddAction" scope="prototype">
	<!-- 依赖注入Service -->
	<property name="bookService" ref="bookService" />
</bean>
第一种整合方式,Action由Struts2自己管理,Service对象采用自动装配, Struts2管理Action多实例的

第二种整合方式,Action由Spring管理,依赖注入Service对象,struts2需要配置伪类名
第二种方式,可以对Action 进行AOP增强
必须要将Spring管理Action 设置scope=”prototype” !!!

——————————————————————————————————————————————————————

使用注解整合SSH












你可能感兴趣的:(spring,Hibernate,struts2)