SSH2整合 struts2.3.4.1 hibernate-annotations-3.4.0.GA spring2.5.6

来源:互联网 发布:js获取时间并格式化 编辑:程序博客网 时间:2024/06/07 20:50

一、首先是jar包

1、 hibernate-distribution-3.6.10.Final
hibernate3.jar
/lib/required/*.jar  如果和Spring2.5集成  lib下required中的commons-collections-3.1.jar与Spring2.5相同(可去一个)

2、 hibernate-annotations-3.4.0.GA

lib/ejb3-persistence.jar
lib/jpa/hibernate-jpa-2.0-api-1.0.1.Final.jar

3、slf4j-1.6.6
slf4j-nop-1.5.2.jar

4、mysql-connector-java-5.1.21
mysql-connector-java-5.1.21-bin.jar

4、 spring2.5.6
/dist/spring.jar
/lib/aspectj/*.jar
/lib/jakarta-commons/commons-collections.jar,commons-dbcp.jar,commons-logging.jar,commons-pool.jar
/lib/j2ee/common-annotations.jar

5、 struts2.3.4.1 webapp
commons-fileupload.jar
commons-io-.jar
freemarker-.jar
ognl-.jar
struts2-core-.jar
xwork-.jar
struts2-spring-plugin-.jar
commons-lang-.jar
commons-lang3-.jar
二、然后是配置文件

1、web.xml

   

<!-- struts2 start -->
   <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>*.do</url-pattern>
       <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
   </filter-mapping>
   <!-- struts2 end -->
  
   <!-- Spring ApplicationContext配置文件的路径,可使用通配符,多个路径用,号分隔,此参数用于后面的Spring-Context
  loader <param-value>/WEB-INF/spring/app*.xml,classpath:app*.xml</param-value> -->
   <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:/config/app*.xml</param-value>
 </context-param>
  
   <!-- spring start -->
   <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
   <!-- spring end -->

2、applicationContext.xml

<?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: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/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd
            http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-2.5.xsd
            http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-2.5.xsd
            http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-2.5.xsd">

 <!-- 定义受环境影响易变的变量 -->
 <bean
  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
  <property name="ignoreResourceNotFound" value="true" />
  <property name="locations">
   <list>
    <value>classpath:/config/properties/application.properties</value>
   </list>
  </property>
 </bean>
 
 <!-- 数据源配置,使用dbcp连接-->
 <bean id="dataSource"
  class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName"
   value="com.mysql.jdbc.Driver">
  </property>
  <property name="url"
   value="${jdbc.url}">
  </property>
  <property name="username" value="${jdbc.username}"></property>
  <property name="password" value="${jdbc.password}"></property>
 </bean>
 
 <!--
  配置SessionFactory,由Spring容器来管理Hibernate
  非Annotation时,使用org.springframework.orm.hibernate3.LocalSessionFactoryBean,
  它注入实体类的方式是setMappingResources(),而Hibernate Annotation所用的映射方式 不是mapping
  resource,而是mapping class,这就要用到LocalSessionFactoryBean的子类
  AnnotationSessionFactoryBean了.因为AnnotationSessionFactoryBean它支持实体的注入
  方式setAnnotatedClasses,即对应Hibernate中的mapping class.参见这两个类的源代码.
 -->
 <bean id="sessionFactory"
  class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
  <property name="dataSource">
   <ref bean="dataSource" />
  </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>
    <prop key="javax.persistence.validation.mode">
     none
    </prop>
   
    <prop key="hibernate.query.factory_class">
     <!--
      org.hibernate.hql.classic.ClassicQueryTranslatorFactory
     -->
     org.hibernate.hql.ast.ASTQueryTranslatorFactory
    </prop>
   </props>
  </property>
  <property name="packagesToScan" value="com.index.star.users.model" />
 </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="save*" propagation="REQUIRED" /> <tx:method
    name="update*" propagation="REQUIRED" /> <tx:method name="delete*"
    propagation="REQUIRED" /> <tx:method name="*send*"
    propagation="REQUIRED" /> <tx:method name="attach*"
    propagation="REQUIRED" /> <tx:method name="*" read-only="true" />
    <tx:method name="find*" read-only="true" />
   -->
   <tx:method name="get*" read-only="true" />
   <tx:method name="*" propagation="REQUIRED" />
  </tx:attributes>
 </tx:advice>

 <!-- 哪些类的哪些方法参与事务 -->
 <aop:config>
  <aop:pointcut id="allServiceMethod"
   expression="execution(* com.index.star.users.service.*.*.*(..))" />
  <aop:advisor pointcut-ref="allServiceMethod" advice-ref="txAdvice" />
 </aop:config>

 
 <!-- 配置spring application的 getbean()工具类
 <bean id="SpringContextHolde" class="common.utils.spring.SpringContextHolder"
  scope="singleton" /> -->
 <!-- 使Spring关注Annotation -->
 <context:annotation-config />
 <!-- 让Spring通过自动扫描来查询和管理Bean -->
 <context:component-scan base-package="com.index" />
</beans>


3、struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
 <!-- 文件上传中整个请求内容允许的最大字节数为15M -->
 <constant name="struts.multipart.maxSize" value="15097152" />
 <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="false" />
 <constant name="struts.i18n.encoding" value="UTF-8" />
 <constant name="struts.action.extension" value="do" />
 <include file="config/struts2/*.xml" />
</struts>


 

 

 

原创粉丝点击