一、第一步加入相关的包(大约40个)
二、在src目录下创建dao、service、action、domain四个包
a. dao包用于与数据库进行操作
b.service包用于将dao包和action包数据传递并进行相应的数据处理
c.domain包用于存放实体类
d.action包负责页面和程序之间传输数据以及页面切换等操作.
三、配置web.xml文件
a.加载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>/*</url-pattern>
</filter-mapping>
b.定位Spring框架配置文件
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
c.配置Spring监听器
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
四、在applicat
ionContext.xml中配置数据源和sessionfactory
a.在beans中完整引入相应包
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
"
b.创建jdbc.properties用于存储连接数据库的相应信息
jdbc.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=jxc
username=root
password=root
c.引入外部属性文件
<context:property-placeholder location="classpath:jdbc.properties"/>
d .配置数据源
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClass}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${username}"></property>
<property name="password" value="${password}"></property>
<!-- 连接池启动时的初始值 -->
<property name="initialSize" value="1"/>
<!-- 连接池的最大值 -->
<property name="maxActive" value="500"/>
<!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->
<property name="maxIdle" value="2"/>
<!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
<property name="minIdle" value="1"/>
</bean>
e.配置sessionFactory
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<!-- 注入连接池 -->
<property name="dataSource">
<ref bean="dataSource" />
</property>
<!-- 配置Hibernate相关属性 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<!-- 加载hibernate映射 -->
<property name="mappingResources">
<list>
<value>cn/muke/ssh/domain/product.hbm.xml</value>
</list>
</property>
</bean>
f.配置事务管理
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
五、将Struts2中的Action类交给Spring容器管理
a.在applicationContext.xml文件中注册Action为bean
<bean id="userAction" class="cn.ssh.action.UserAction" scope="prototype">
<property name="userService" ref="userService"/>//注入service类
</bean>
b.在struts.xml文件中配置action
<package name="ssh" extends="struts-default" namespace="/">
<action name="user_*" class="userAction" method="{1}">
</action>
</package>
注意:此时action中的class路径不再是完整路径而是Spring容器中的bean
名
六、在Dao层中的类继承HibernateDaoSupport类获取HibernateTemplate类访问数据库
public class UserDao extends HibernateDaoSupport {
public void save(User user) {
this.getHibernateTemplate().save(user);
}
}
也可以通过Object execute(HibernateCallback callback)
List executeFint(HibernateCallback callback)
两个方法来回调Hibernate
List<User> list=(List<User>)getHibernateTemplate().execute(
new HibernateCallback(){
@Override
public Object doInHibernate(Session session)
throws HibernateException ,SQLException
{
Query query = session.createQuery("from User");
return querylist();}
});
七、向DAO层中的类注入sessionFactory
在applicationContext.xml中做如下配置
<bean id="UserDao" class="cn.ssh.dao.UserDao">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>