struts+spring+hibernate整合

本文基于Struts1.3.10+Spring2.5.6+Hibernate3.3.2

一、下载相关jar

Struts:struts.apache.org

Spring:www.springsource.org/download

Hibernate:www.hibernate.org/downloads

 

二、搭建环境

1、struts需要的jar

(1)必需的jar

struts-core-1.3.10.jar,struts-extras-1.3.10.jar,struts-taglib-1.3.10.jar,antlr-2.7.2.jar,commons-beanutils-1.8.0.jar,commons-chain-1.2.jar,commons-digester-1.8.jar,commons-logging-1.0.4.jar

(2)文件上传需要的jar

commons-fileupload-1.1.1.jar,commons-io-1.1.jar

(3)验证时需要的jar

commons-validator-1.3.1.jar

2、Spring需要的jar

spring.jar,spring-webmvc-struts.jar,slf4j-api-1.5.0.jar,slf4j-log4j12-1.5.0.jar,log4j-1.2.15.jar,commons-dbcp.jar,commons-pool.jar

3、Hibernate需要的jar

hibernate-distribution-3.3.2.GA-dist.zip中的以下jar

hibernate3.jar,lib\required文件夹下的所有jar(其中antlr-2.7.6.jar与struts中的antlr-2.7.2.jar冲突,建议选择高版本)

 

三、在web.xml中对Spring容器和Struts进行实例化

    <context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath*:\config\**\*applicationContext.xml,classpath*:\config\**\*applicationContext-*.xml,classpath*:**\applicationContext.xml,classpath*:**\*-applicationContext-*.xml</param-value>
 </context-param>
 <!-- 对Spring容器进行实例化 -->
 <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
   
 <servlet>
  <servlet-name>struts</servlet-name>
  <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
  <init-param>
   <param-name>config</param-name>
   <param-value>/WEB-INF/config/struts-config.xml</param-value>
  </init-param>
 </servlet>
 <servlet-mapping>
  <servlet-name>struts</servlet-name>
  <url-pattern>*.do</url-pattern>
 </servlet-mapping>

 

四、spring配置数据源,配置模板如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                           http://www.springframework.org/schema/tx
                           http://www.springframework.org/schema/tx/spring-tx-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/context
                           http://www.springframework.org/schema/context/spring-context-2.5.xsd">
                          
 <!-- 采用单一元素属性占位符的方式配置数据源 -->                    
 <context:property-placeholder location="classpath:config/jdbc.properties"/>

 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
     <property name="driverClassName" value="${jdbc.driver}"/>
     <property name="url" value="${jdbc.url}"/>
     <property name="username" value="${jdbc.username}"/>
     <property name="password" value="${jdbc.password}"/>
    </bean>
   
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
     <property name="dataSource" ref="dataSource"/>
     
     <!-- 指定映射文件存放的文件夹 -->
     <property name="mappingLocations">   
       <value>classpath*:/**/*.hbm.xml</value>
     </property>
  
     <!-- 指定映射文件
     <property name="mappingResources">
         <list>
            <value>config/hbm/Employee.hbm.xml</value>
            <value>config/hbm/Department.hbm.xml</value>
            <value>config/hbm/EmployeeDepartment.hbm.xml</value>
         </list>
     </property>
     -->
  
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">${hibernate.dialect}</prop>
    <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
    <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
   </props>
    </property>
    
    <!-- 映射hibernateProperties属性的简写方式
    <property name="hibernateProperties">
         <value>
          hibernate.dialect=${hibernate.dialect}
          hibernate.show_sql=${hibernate.show_sql}
          hibernate.format_sql=${hibernate.format_sql}
         </value>
     </property>
     -->
 </bean>
 
   <!-- JDBC事务代理  -->
   <bean id="jdbcTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
       <property name="dataSource" ref="dataSource"/>
   </bean>
 <bean id="jdbcTransactionProxy"
  class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
  abstract="true">
  <property name="transactionManager" ref="jdbcTransactionManager"/>
  <property name="transactionAttributes">
   <props>
    <prop key="add*">PROPAGATION_REQUIRED</prop>
    <prop key="save*">PROPAGATION_REQUIRED</prop>
    <prop key="insert*">PROPAGATION_REQUIRED</prop>
    <prop key="update*">PROPAGATION_REQUIRED</prop>
    <prop key="delete*">PROPAGATION_REQUIRED</prop>
    <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
   </props>
  </property>
 </bean>
 
 <!-- HIBERNATE事务代理  -->
 <bean id="hibernateTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
       <property name="sessionFactory" ref="sessionFactory"/>
   </bean>
 <bean id="hibernateTransactionProxy"
  class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
  abstract="true">
  <property name="transactionManager" ref="hibernateTransactionManager" />
  <property name="proxyTargetClass" value="true" />
  <property name="transactionAttributes">
   <props>
    <prop key="add*">PROPAGATION_REQUIRED</prop>
    <prop key="save*">PROPAGATION_REQUIRED</prop>
    <prop key="insert*">PROPAGATION_REQUIRED</prop>
    <prop key="update*">PROPAGATION_REQUIRED</prop>
    <prop key="delete*">PROPAGATION_REQUIRED</prop>
    <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
   </props>
  </property>
 </bean>
 
 <!-- 为处理BLOB进行JDBC抽取-->
 <bean id="nativeJdbcExtractor"
    class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor" lazy-init="true" />
 <bean id="lobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true">
  <property name="nativeJdbcExtractor">
   <ref local="nativeJdbcExtractor" />
  </property>
 </bean>
 
 <bean id="baseHibernateDAO" class="dal.dao.BaseHibernateDAO">
     <description>Hibernate实现</description>
     <property name="sessionFactory" ref="sessionFactory"/>
 </bean>
 
 <bean id="baseJdbcDAO" class="dal.dao.BaseJdbcDAO">
     <description>JDBC实现</description>
     <property name="dataSource" ref="dataSource"/>
     <!--property name="pageDialect" ref="pageDialect"/-->
 </bean>
 
</beans>

你可能感兴趣的:(spring,Hibernate,bean,struts,jdbc)