spring对Hibernate提供的支持主要包括:
将hibernate需要用到的数据源DataSource(如BasicDataSource数据源或C3P0连接池数据源)、hibernate的SessionFactory实例及其事务管理器HibernateTransactionManager移交给spring容器管理。
完成spring和Hibernate框架添加后,Hibernate配置信息被写在spring配置文件applicationContext.xml中:
<!-- 定义BasicDataSource数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">······
<!-- 定义Hibernate的SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<!-- 将上面的数据源dataSource注入到LocalSessionFactoryBean类的sessionFactory属性 -->
<property name="dataSource"><ref bean="dataSource">····
spring整合struts2主要是为了让struts2中的Action实例可以访问spring容器中定义的业务逻辑组件资源,同时将Action的实例化和依赖注入的工作交给spring容器统一管理。
创建Action,Action中用UserBiz声明一个属性,添加set方法用于依赖注入
spring整合struts2步骤:
①spring配置文件applicationContext.xml中部署struts2的Action,由于struts2在处理请求时,每个不同的请求均会生成一个相应的Action实例负责处理,因此,在配置时,需要使用prototype原型模式,以确保每次的Action实例是新的。
<bean id="umAction" class="com.ssh2.action.UserManagerAction" scope="prototype">
<property name="userBiz" ref="userBiz" />
</bean>
②在struts2配置文件struts.xml中配置Action的映射,class属性不再使用类的全名,而是使用applicationContext.xml中定义的Action的Bean实例名称:
<package name="default" extends="struts-default">
<action name="doLogin" class="umAction">
<result name="error">error.jsp</result>······
③在给项目添加spring支持时,web.xml自动生成了一段配置信息,让web程序启动时自动装载spring容器:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-calss>
</listener>
<!-- 指定配置文件位置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
④编写登录页面login.jsp:
<s:form action="doLogin.action">
···<s:textfield name="loginName" label="用户名" />
···<s:textfield name="loginPwd" label="密码" />
···<s:submit value="确认" />···
部署项目,启动Tomcat,测试成功。