环境:
struts2.3.X
spring4.0.0
hibernate4.2

思路:从下开始往上集成;层与层之间没有关系;在集成的时候,只关注当前集成的那个层的内容;

1,创建一个空的web项目;重新定位class文件编译路径
2,设置项目的编码;
3,完成domain;
4,完成映射文件;
5,写DAO接口;
6,写DAO实现

  1),拷包(hiberante/required,数据库驱动,springcore/test/bean/context);
  2),spring配置文件:
    1),配置datasource;
    2),添加db.properties文件;
    3),引入db.properties文件;
  3),配置sessionFactory
    1),导入spring jdbc/tx/orm;
    2),使用LocalSessionFactoryBean来创建SessionFactory;
      1),配置dataSource;
      2),配置hibernate的其他相关配置:直接在classpath下面创建一个hibernate.proeprties文件,在这里面加上show_sql,dailect,hbm2ddl.auto等hibernate配置;(spring会自动的加载和读入);
      3),配置映射文件:使用的是扫描hbm.xml文件所在的文件夹路径来引入的(mappingDirectoryLocations,这个配置后面的内容可以使用classpath:前缀,注意是文件路径)

  4),完成DAO:
    1),直接在dao中注入一个SessionFactory;
    2),在DAO中直接使用SessionFactory.getCurrentSession()来得到我们需要的session;
    3),千万不要开启事务;
    4),千万不要手贱关session;
  5),在spring中配置DAO;
    1),抽象一个baseDAO;<bean id="baseDAO" abstract="true" />
    2),让employeeDAO继承BaseDAO;<bean id="employeeDAO" parent="baseDAO" />

7,写Service:
  1),完成service接口和实现;
  2),在spring中配置servicebean;
  3),配置事务:
    1),配置transcationMaanager,使用HibernateTransactionManager,并传入一个sessionFactory;
    2),配置事务属性;
    3),配置事务切面;

8,集成Struts2
  1),拷贝相关内容(struts2.xml,struts2的jar包,web.xml)
  2),完成Action;
  3),在Spring中配置Action;注意,action的scope需要是prototype的;
  4),完成struts的配置文件:
  注意,在action的class属性,不能再写Action的类限定名;只能写这个Action在spring中配置的bean的id值;
  5),导入spring-web.jar,struts2-spring-plugin.jar;
  6),在web.xml中添加<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  7),在web.xml中添加spring框架启动的加载的配置文件路径:

    <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>

struts集成spring原理

在struts2-spring-plugin.jar中:
<!--配置了一个名字叫做spring的StrutsSpringObjectFactory -->
<bean type="com.opensymphony.xwork2.ObjectFactory" name="spring" class="org.apache.struts2.spring.StrutsSpringObjectFactory" />

<!-- struts.objectFactory代表,在struts中,使用哪个类来作为工厂类,生产struts需要的bean(包括action,interceptor) -->
<constant name="struts.objectFactory" value="spring" />

SSH集成(Struts+Spring+Hibernate)的更多相关文章

  1. SSH(struts+spring+hibernate)常用配置整理

    SSH(struts+spring+hibernate)常用配置整理 web.xml配置 <?xml version="1.0" encoding="UTF-8&q ...

  2. 用eclipse搭建SSH(struts+spring+hibernate)框架

    声明: 本文是个人对ssh框架的学习.理解而编辑出来的,可能有不足之处,请大家谅解,但希望能帮助到大家,一起探讨,一起学习! Struts + Spring + Hibernate三者各自的特点都是什 ...

  3. SSH(Struts+spring+hibernate)配置

    1.spring和struts 1)web.xml 配置spring的ContextLoaderListener(监听器) 配置Struts的StrutsPrepareAndExecuteFilter ...

  4. SSH(Struts Spring Hibernate开发框架)

    Spring(Model) Spring的核心思想是IoC和AOP,Spring使得管理对象更加方便,极大的降低组件之间的耦合度,实现了软件各层之间的解耦. Struts(View) 使用Struts ...

  5. Spring学习8-用MyEclipse搭建SSH框架 Struts Spring Hibernate

    1.new一个web project. 2.右键项目,为项目添加Struts支持. 点击Finish.src目录下多了struts.xml配置文件. 3.使用MyEclipse DataBase Ex ...

  6. 【SSH进阶之路】Struts + Spring + Hibernate 进阶开端(一)

    [SSH进阶之路]Struts + Spring + Hibernate 进阶开端(一) 标签: hibernatespringstrutsssh开源框架 2014-08-29 07:56 9229人 ...

  7. Struts + Spring + Hibernate 进阶开端(一)

    Long Long ago,就听说过SSH,起初还以为是一个东东,具体内容更是不详,总觉得高端大气上档次,经过学习之后才发现,不仅仅是高大上,更是低调奢华有内涵,经过一段时间的研究和学习SSH框架的基 ...

  8. Struts+Spring+Hibernate进阶开端(一)

    入行就听说SSH,起初还以为是一个东西,具体内容就更加不详细了,总觉得高端大气上档次,经过学习之后才发现,不仅仅是高大上,更是低调奢华有内涵,经过一段时间的研究和学习SSH框架的基本原理与思想,总算接 ...

  9. Struts,spring,hibernate三大框架的面试

    Struts,spring,hibernate三大框架的面试 1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3 ...

  10. Struts+Spring+Hibernate整合入门详解

    Java 5.0 Struts 2.0.9 Spring 2.0.6 Hibernate 3.2.4 作者:  Liu Liu 转载请注明出处 基本概念和典型实用例子. 一.基本概念       St ...

随机推荐

  1. About the Importance of Aim in Life

    Have an aim in life, or your energies will all be wasted.   ---R. Peters 人生应该树立目标,否则你的精力会白白浪费. ---彼得 ...

  2. docker学习------docker私有仓库的搭建

    192.168.138.102:23451.私有仓库的搭建(docker pull registry),拉取最新的镜像 2.查看拉取的仓库镜像(docker images) 3.启用registry镜 ...

  3. js中的简单数据类型和复杂数据类型的存储

    基本类型存储的是值而复杂数据类型也叫引用类型存储的是对象的地址如0x00001而在栈中存的是变量数值和函数参数 堆中存的是对象和数组 堆栈空间分配 栈(操作系统):由操作系统自动分配释放 ,存放函数的 ...

  4. 萌新的IDEA_web开发笔记(未完)

    萌新IDEA_web开发笔记 按兴趣自己搞的网页: http://47.94.140.98:8080/ow_web/my_web/web/ 暂时还没做完. 部署在租的服务器上面,背景视频加载可能有点慢 ...

  5. remote connect to ubuntu unity

    https://community.nxp.com/thread/220596 putty secure copy protocol can be used to transfer file amon ...

  6. 行为驱动:Cucumber + Selenium + Java(二) - extentreports 测试报告+jenkins持续集成

    1.extentreports 测试报告 pom文件 <dependency> <groupId>com.vimalselvam</groupId> <art ...

  7. @Transactional 无效原因

    在controller 上面使用  @Transactional 注解时候发现数据没有回滚,在执行完update 更新语句,事务直接就commit 了, 此时方法尚未执行结束,数据库数据已经更新了. ...

  8. Python内置模块之-hashlib

    一 .概述 摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示). 摘要算法的特点 不论data大小,摘要结果是固定长度 单向函数, ...

  9. seata-server安装、运行(ubuntu)

    seata-server为seata中的事务协调器. seata的wiki https://github.com/seata/seata/wiki/Home_Chinese 一.下载并安装 wget ...

  10. ORA-12541:tns:no listener

    打开任务管理器,查看服务,看箭头所指的三个服务是否开启即可