zoukankan      html  css  js  c++  java
  • ssh三大框架整合

    一.ssh整合理论

      1.ssh整合其实是把hibernate和struts2的依赖对象交给spring来创建和维护

      2.struts2的Action创建由spring来创建

      3.hibernate的sessionFactor以及session的获得,aop事务等由spring来管理

    二.导包

      1.hibernate(3类包):

        (1)hibernate/libs/required下的所有jar

        (2)hibernate/libs/jpa的一个jpa包,java持久化规范(接口)包

        (3)mysql驱动包

      2.struts2(2类包):

        (1)struts2/apps/blank.war里的lib下所有Jar(注意的是:有一个javasist包跟hibernage提供的jar冲突了,删除低版本的那个)

        (2)struts2的libs下的struts-spring插件包(导入该包后,一旦struts启动就会去找spring的配置文件,如果找不到会抛出异常)

      3.spring(6类包):

        (1)基本核心包4+2:spring-beans,spring-context,spring-core,spring-expression4个,logging+log4j(这个较新版本可以不用)2个包

        (2)整合web 1个:spring-web包

        (3)整合aop 4个:spring-aop,spring-aspect的2个spring提供,aop联盟包和weaver包的2个第三方提供

        (4)整合jdbc 4个:spring-jdbc,spring-tx,spring-orm(spring整合Hibernate所需),c3p0 4个包

        (5)整合junit 1个:spring-test

        (6)标签库包2个(如果是my-eclipse则不用):jstl和standard包

    三.单独整合spring到web项目

      1.创建配置文件,导入4个约束:beans,context,aop,tx

      2.配置web.xml,让容器随项目启动而启动

    四.单独整合struts2到web项目

      1.创建配置文件,导入约束

      2.配置web.xml核心过滤器

    五.整合spring与struts2

      1.配置常量,在default.properties有两个常量,如图:

     

         (1)struts.objectFactory = spring:如果打开了该常量,则struts的对象创建交给spring来负责,包括属性的装配

        (2)struts.objectFactory.spring.autoWire = name:如果上面的常量打开了,这个打不打开都无所谓;该常量表示spring自动装配action中的属性,得保证action的属性名和beanName得一样才能完成自动装配

      2.整合方案

        (1)整合方案1:struts.xml的action元素的class属性的完整类名不变,还是由struts来创建Action对象,但spring来自动装配Action对象依赖的属性(不推荐)

        (2)整合方案2:struts.xml的action元素的class属性值变成applicationContext.xml的action的beanName,由spring全权管理和维护,但action对象的依赖属性须在bean元素内手动配置<property>;且action类对应的bean的scope的值必须为prototype

     

    六.单独整合hibernate

      1.书写实体类和orm元数据,完成实体类和表之间的映射关系

      2.书写主配置,包括必选配置,可选配置,引入orm元数据配置

        (1)书写主配置特别注意的是有一些已经归spring管理和维护的配置就不要在配了,比如session与当前线程绑定(session相关的配置),隔离级别的指定等,如图:

    七.整合spring和hibernate

      1.在spring中配置sessionFactory,该对象由spring来创建和管理;注意的是该sessionFactory类是localsessionFactoryBean,由spring提供的,封装了Hibernate的sessionFactory对象;记得选的时候得对应好自己hibernate的版本

      2.指定加载配置文件;hibernate时创建sessionFactory时得先加载配置文件信息,所以我们的sessionFactory是得依赖配置信息的

        (1)加载配置方案1:读取hibernate.cfg.xml的配置信息

        (2)加载配置方案2(推荐使用):把hibernate的主配置信息挪动spring中,读取spring中hibernate的配置信息,如图:

     

       3.引入c3p0连接池

        >spring加入hibernate的四大参数配置,hibernate直接创建连接来操作数据库。现在我们想让hibernate通过连接池来获取连接

        (1).创建四大参数的配置文件

        (2).在spring配置文件配置读取properties,如图:

         (3).配置c3p0连接池,如图:

     

         (4).为sessionFactory注入连接池,即可以通过连接池获取连接创建session来操作数据库,如图:

     

         (5)删除掉在spring中配置的四大参数信息

      4.HibernateTemplate操作数据库

        (1)在学习spring整合jdbc时,有一个jdbcTemplate来操作数据库;spring根据不同的技术进行封装并提供了不同的模板,整合hibernate提供了HibernateTemplate对象,其底层还是封装了session代码来操作数据库,不过该对象得依赖sessionFactory来获取session;

        (2)dao层可以通过继承HibernateDaoSupport来获取到HibernateTemplate对象,省了在spring配置,只需要把sessionFactory注入给HibernateDaoSupport即可

        (3)用HibernateTemplate查询数据库,如图:

     

     

    八.整合aop事务

      在spring操作事务一定得有核心事务管理器,spring为不同的平台提供不同的事务管理器,为hibernate技术封装了HibernateTransactionManager;

      1.spring配置核心事务管理器,底层封装了session代码,得依赖session工厂来获取,如图

     

       2.xml配置aop事务

        (1)配置通知,如图:

     

        (2)配置目标对象,如图:

        (3)配置将通知织入到目标对象,如图:

      3.注解配置aop事务

        1.spring配置文件开启注解配置事务,如图:

         2.在方法或类上加事务注解,如图:

     

    九.扩大session的范围

      1.学习hibernate懒加载时,生成的代理对象得保证它能在session的环境下使用,所以在这里也得扩大session的作用范围

      2.spring已经提供了一个过滤器用于扩大session的范围,所以在web.xml配下就可以了,如图:

     

       3.得注意的是:任何过滤器都建议放在struts核心过滤器的前面,因为到核心过滤器判断需要struts2来处理请求,则后面的过滤器执行不到了

  • 相关阅读:
    WebApi下载附件文件
    zabbix
    redis主从与集群搭建
    redis
    mariadb集群配置(主从和多主)
    使用python执行sql语句和外键解析
    mariadb(四)连接查询,视图,事物,索引,外键
    mariadb(三)查
    mariadb(二)增删改
    firewalld
  • 原文地址:https://www.cnblogs.com/ibcdwx/p/12795516.html
Copyright © 2011-2022 走看看