文中主要基于Myeclipse进行配置,配置流程为:Hibernate --> Spring --> 整合 --> struts2 -->整合。注意:在此文中,主要讲述基于注解方式配置Bean。

  在配置三大部件时,都需要导入各自的jar包。基于Myeclipse,可右击“项目”,点击“Myeclipse”,找到“Project Facets[Capabilities]”,然后导入jar包。

  配置HIbernate:首先创建实体类,然后配置实体关系映射表 .hbm.xml文件,最后创建Hibernate配置文件 Hibernate.cfg.xml。在配置 .hbm.xml文件时,可寻找一个插件,由系统自动生成,这里不再说明;也可跟创建一般配置文件一般,手动创建,然后根据数据库表字段逐一配置(右键“项目”,file > xml[Basic Tamplates] > "命名" > "选择第一个DTD" > "选择第二个,找到 HIbernate Mapping DTD 3.0 //en" >finish)。在配置Hibernate.cfg.xml时,数据库连接可由Spring配置,所以文件中只需配置一些Hibernate基础配置。另外创建Hibernate配置文件只需右键“项目”,在“File”中寻找Hibernate configuration file即可。

  1.Hibernate配置文件中信息可有:

    <session-factory>
      <!-- 配置数据库方言 -->
      <!-- <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> -->
      <!-- 配置Hibernate 事务隔离级别 -->
      <property name="connection.isolation">2</property>
      <!-- 运行时是否打印sql -->
      <property name="show_sql">true</property>
      <!-- 运行时是否格式化 sql-->
      <property name="format_sql">true</property>
      <!-- 生成数据库表的策略 --自动生成-->
      <property name="hbm2ddl.auto">update</property>
    </session-factory>

  2.配置Spring并整合Hibernate:创建Spring配置文件只需右键”项目”,在”File”中寻找“Struts Configuration file”即可。配置中基于注解方式注入。 

  <Beans>

    <context:component-scan base-package="com.shymain.webwork"></context:component-scan>  <!-- 配置IOC 容器扫描范围 -->
    <!-- 导入资源文件 -->
    <context:property-placeholder location="classpath:db.properties"/>
    <!-- 配置C3P0数据源 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
      <property name="user" value="${jdbc.user}"></property>
      <property name="password" value="${jdbc.password}"></property>
      <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
      <property name="driverClass" value="${jdbc.driverClass}"></property>
      <property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
      <property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
    </bean>

    <!-- 配置Hibernate 的SessionFactory 实例: 通过Spring 提供的 LocalSessionFactoryBean 进行配置 -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <!-- 配置数据源属性 -->
      <property name="dataSource" ref="dataSource"></property>
      <!-- Hibernate 配置文件及名称 -->
      <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
      <!-- 配置Hibernate 映射文件的位置及名称,可以使用通配符 -->
      <property name="mappingLocations"
       value="classpath:com/shymain/webwork/entity/*.hbm.xml"></property>
      <property name="hibernateProperties">
        <props>
          <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
          <prop key="hibernate.autoReconnect">true</prop>
        </props>
      </property>
    </bean>
    <!-- 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
      <property name="sessionFactory" ref="sessionFactory" />
    </bean>
    <tx:annotation-driven transaction-manager="transactionManager" />  <!-- 启动事物 -->
    <!-- proxy-target-class属性值决定是基于接口的还是基于类的代理被创建。具体意义为:
    当要使用实现了某个接口的类让Spring来生成bean时,无需在aop配置中添加proxy-target-class,因为它默认为false.
    但如果要使用一个指定的类,让Spring来生成bean,并使用它的某个方法时,需要在aop配置上加上一句proxy-target-class="true",否则用JUnit时,会出现:
    Java.lang.ClassCastException: com.sun.proxy.$Proxy6 cannot be cast to daoImp.DAOImp类似的错误. -->
    <aop:aspectj-autoproxy proxy-target-class="true"/>

  </Beans>  

  注意:在使用注解注入Bean时,各类之前应加入@Component,@Respository,@Service,@Action等进行注释。对于各类中实体对象,使用@Autowire自动注入。对于事物管理,可在事务处理类之前需要申明事务,使用@Transactional注释。如果使用 .XMl配置文件配置,需要配置切入点,如下:

    <!-- 配置事务属性,需要事务管理器 -->
       <tx:advice id="txadvice" transaction-manager="transactionManager">
        <tx:attributes>
          <tx:method name="*" propagation="SUPPORTS"/>
        </tx:attributes>
      </tx:advice>
    <!-- 配置事务切入点,以及把事务切入点与事务属性关联起来 -->
    <aop:config>
      <aop:pointcut expression="execution(* com.shymain.webwork.service.*.*(..))"  id="txPointcut"/>
      <aop:advisor advice-ref="txadvice" pointcut-ref="txPointcut"/>
    </aop:config>

  3.配置Struts并与Spring整合:使用注解配置JavaBean,与一般Bean的配置相同。需要注意的是,Struts与Spring整合时,在Struts中action的配置属性class需要指向Spring中相对应Bean的id属性。另外,整合过程中,对应Action的JavaBean配置需指定Scope属性值为“prototype”,基于注解使用@Scope("prototype")。struts配置文件的创建只需右键“项目”,在“File”中寻找即可。

    

  struts配置文件中配置: 

  <struts>
    <!-- 配置Action的可延续后缀名 -->
    <constant value="action,do," name="struts.action.extension"></constant>
    <!-- 指定由Spring创建实例 -->
    <constant name="struts.objectFactory" value="spring" />
    <package name="default" extends="struts-default" namespace="/">
      <!-- action中class属性指定在spring配置中Action相对应的id -->
      <action class="customerAction" name="CustomerAction" method="save">
      <result name="success">/success.jsp</result>
      </action>
    </package>
  </struts>

  练习时个人教训: 创建项目时,注意将连接数据库jar包导入项目中,确保在 WEB-INF 下的 lib 中存在,不然出现各种错误,最后还是不知道错在哪里。。。。

  修改:在配置Struts时,需要在web.xml 中配置filter过滤器,由于此前是基于Myeclipse整合,在配置Struts时,系统会自动配置。

基于Myeclipse的三大框架(SSH)整合的更多相关文章

  1. 三大框架SSH整合

    三大框架SSH整合 -------------------------------Spring整合Hibernate------------------------------- 一.为什么要整合Hi ...

  2. 三大框架SSH(struts2+spring+hibernate)整合时相关配置文件的模板

    最近在学SSH三大框架的整合,在此对他们整合时相关配置文件做一简单的模板总结,方便以后复用! 首先是web.xml配置文件,这里面就配置一些简单的监听器.过滤器,包括spring核心配置文件appli ...

  3. SSH三大框架的整合

    SSH三个框架的知识点 一.Hibernate框架 1. Hibernate的核心配置文件 1.1 数据库信息.连接池配置 1.2 Hibernate信息 1.3 映射配置 1.4 Hibernate ...

  4. JavaEE三大框架的整合

    JavaEE三大框架的整合                                                                                       ...

  5. SSM三大框架的整合

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 在Java后端开发领域,Spri ...

  6. [转]JAVA三大框架SSH和MVC

    Java—SSH(MVC) JAVA三大框架的各自作用  hibernate是底层基于jdbc的orm(对象关系映射)持久化框架,即:表与类的映射,字段与属性的映射,记录与对象的映射 数据库模型 也就 ...

  7. JAVA三大框架SSH和MVC

    Java—SSH(MVC) JAVA三大框架的各自作用    hibernate是底层基于jdbc的orm(对象关系映射)持久化框架,即:表与类的映射,字段与属性的映射,记录与对象的映射 数据库模型 ...

  8. javaweb三大框架SSH

    1.MVC三层架构:模型层,控制层和视图层.模型层,用Hibernate框架让来JavaBean在数据库生成表及关联,通过对JavaBean的操作来 对数据库进行操作:控制层,用Struts框架来连接 ...

  9. JAVA三大框架SSH的各自作用

        一.Spring Spring是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯. Spring的 ...

随机推荐

  1. 算法实现c语言--02

    从键盘上输入字符,将小写字母转换成大写字母.输入“ctl + z” 结束 . #include<stdio.h> #include<stdlib.h> //从键盘上输入字符,将 ...

  2. 利用Powershell在IIS上自动化部署网站

    本文主要讲如何通过Powershell在IIS上自动化部署ASP.NET网站,而不涉及Powershell的基本语法,如果没有Powershell基础的同学也可以把本文作为学习Powershell的基 ...

  3. win10文件夹或文件已在另一程序中打开

    我们在对文件或文件夹进行删除.移动.重命名等操作时,系统可能提示“操作无法完成,因为其中的文件夹已在另一程序中打开,请关闭该文件或文件夹,然后重试.”,遇到这种情况我们应该怎么办呢?请看下文. 方法/ ...

  4. AngularJS系统学习之Factory,Service, Provider(工厂,服务,供应者)

    本文转自:http://blog.csdn.net/zcl_love_wx/article/details/51404390 我看过敲过代码之后, 有了很深的理解, 这三个东西其实都是用来返回对象的. ...

  5. Indexed DB入门导学(1) – 51CTO.COM

    在html 5中,其中一个引人注意的新特性,那就是允许使用Indexed DB.… 查阅全文 ›

  6. python 之 exec命令

    参数1:字符串形式的命令 参数2:全局作用域(字典形式),如果不指定默认使用globals() 参数3:局部作用域(字典形式),如果不指定默认使用locals() g= { 'x':1, 'y':2 ...

  7. c++重载输入输出运算符

    1 最好打断点看看哦 2例子 #include <iostream> using namespace std; class Complex2 { public: Complex2(, ) ...

  8. Inside Geometry Instancing(下)

    Inside Geometry Instancing(下) http://blog.csdn.net/soilwork/article/details/655858 此教程版权归我所有,仅供个人学习使 ...

  9. TyvjP1863 [Poetize I]黑魔法师之门(2014-8-27)

    P1863 [Poetize I]黑魔法师之门 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 经过了16个工作日的紧张忙碌,未来的人类终于收集到了足够的能源 ...

  10. IT兄弟连 JavaWeb教程 Servlet会话跟踪 Session常用方法

    ●  public Object getAttribute(String name) 该方法返回在该session会话中具有指定名称的对象,如果没有指定名称的对象,则返回null. ●  public ...