环境:
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. python3中的socket

    socket是什么?用它做什么? socket,我们通俗的称之为套接字, 是进程间通信的一种方式,但是他与其他进程通信的一个主要区别是 他能实现不同主机间的通信,比如我们现在用的浏览器,在比如我们使用 ...

  2. 2.5 elif

    elif 想一想: if能完成当xxx时做事情 if-else能完成当xxx时做事情1,否则做事情2 如果有这样一种情况:当xxx1满足时做事情1:当xxx1不满足.xxx2满足时做事情2:当xxx2 ...

  3. 通过命令修改mysql的提示符

    在cmd窗口操作mysql数据库的时候,前面的提示符永远都是mysql>,这个提示符可以通过命令修改. 在登录mysql时修改: mysql -uroot -p --prompt 提示符 登录后 ...

  4. Centos7 安装 tree

    Centos7 安装 tree 用命令 yum 安装  tree yum -y install tree

  5. (一)Java工程化--Maven基础

    Maven 读作['mevən] 翻译成中文是"内行,专家" Maven是什么 包依赖的前世今生: 原始的jar包引用--> ant --> maven. 是一种项目管 ...

  6. c++ 智能指针用法详解

    本文介绍c++里面的四个智能指针: auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是c++11支持,并且第一个已经被c++11弃用. 为什么要使用智能 ...

  7. TCP-IP详解笔记5

    TCP-IP详解笔记5 ICMPv4和ICMPv6: Internet控制报文协议 Internet控制报文协议(Internet Control Message Protocol, ICMP)与IP ...

  8. liunx 修改ssh 端口22

    vim  /etc/ssh/sshd_config 找到Port  22  添加 Port 5002 重启sshd /bin/systemctl restart sshd.service 防火墙释放5 ...

  9. Mybatis注意点之#与$区别

    动态 SQL 是 mybatis 的强大特性之一,也是它优于其他 ORM 框架的一个重要原因.mybatis 在对 sql 语句进行预编译之前,会对 sql 进行动态解析,解析为一个 BoundSql ...

  10. Win7+keras+tensorflow使用YOLO-v3训练自己的数据集

    一.下载和测试模型 1. 下载YOLO-v3 git clone https://github.com/qqwweee/keras-yolo3.git 这是在Ubuntu里的命令,windows直接去 ...