一、上节内容回顾

1 基于aspectj的注解aop操作

2 spring的jdbcTemplate操作

(1)实现crud操作

- 添加、修改、删除update方法

- 查询

-- 查询某个值 queryForObject

-- 查询对象queryForObject

-- 查询list query

3 spring配置连接池

(1)配置c3p0连接池

(2)dao注入jdbcTemplate

4 spring事务管理

(1)事务概念

(2)spring进行事务管理api

(3)spring进行事务配置

- 基于xml配置文件

- 基于注解方式

二、今天内容介绍

SSH三大框架整合

(1)struts2

(2)hibernate5.x

(3)spring4.x

三、回顾SSH框架知识点

Hibernate框架

1 hibernate核心配置文件

(0)orm思想

- 对象关系映射

(1)数据库信息

(2)hibernate信息

(3)映射配置

(4)hibernate核心配置文件

- 如果单纯使用hibernate框架,核心配置文件名称 hibernate.cfg.xml和位置 src下面 固定的

- hibernate和spring整合时候,hibernate核心配置文件名称和位置没有固定要求的

2 hibernate映射配置文件

(1)实体类和数据库表映射关系—使用orm思想

3 hibernate操作的步骤

(1)在spring框架对hibernate框架进行封装,使用hibernateTemplate

Struts2框架

1 Action操作

(1)action创建三种方式

- 继承类 ActionSupport

(2)配置action访问路径

- 创建struts.xml配置文件,这个文件名称和位置固定 src下面的

(3)配置访问action的多个方法

- 使用通配符方式配置

(4)在action获取表单提交数据

- 获取request对象

** 使用ServletActionContext类获取

- 属性封装

- 模型驱动(重点)

- 表达式封装

(5)在action操作域对象

- 使用ServletActionContext获取域对象

(6)配置struts2的过滤器

2 值栈

(1)向值栈放数据

- set方法

- push方法

- 定义变量,生成get方法

(2)从值栈获取数据

- 在jsp中使用struts2标签+ognl获取

- <s:property>

- <s:iterator>

3 拦截器

(1)aop和责任链模式

(2)自定义拦截器

- 继承MethodFilterInterceptor

- 重写类里面的方法

- 配置拦截器和action关联

Spring框架

1 spring核心配置文件

(1)名称和位置没有固定要求

(2)在spring核心配置文件中引入schema约束

2 创建对象

(1)xml配置方式:<bean  id=””  class=””  scope=””/>

(2)注解方式:四个注解

3 注入属性(对象类型属性)

(1)xml配置方式:

(2)注解方式:两个注解

- autowired

- resource

3 使用ServletContext对象和监听器实现

(1)在服务器启动时候,加载spring配置文件,创建对象

(2)配置spring的监听器

(3)指定spring配置文件位置

4 jdbcTemplate

5 spring事务配置

(1)xml方式

(2)注解方式

SSH框架整合思想

1 三大框架应用在javaee三层结构

2 struts2框架和spring整合

(1)struts2的action在spring配置

3 spring框架和hibernate框架整合

(1)hibernate的sessionFactory交给spring配置

(2)把hibernate数据库配置交给spring配置

四、整合struts2和spring框架

1 把struts2的action交给spring管理

2 实现过程

第一步 导入struts2的jar包

(1)导入用于整合的jar包

第二步 创建action

第三步 创建struts2核心配置文件,配置action

(1)位置在src下面,名称是struts.xml

第四步 配置struts2过滤器

第五步 导入spring的jar包

第六步 创建spring配置文件

(1)       引入约束

(2)       配置spring监听器

(3)       指定spring配置文件位置

第七步 把action交给spring进行配置(***)

(1)在spring配置action对象,在struts.xml中也配置action对象

(2)解决:

只需要在spring里面配置action对象,不要在struts.xml中配置

五、Spring框架整合hibernate框架

1 把hibernate核心配置文件中配置数据库信息,把数据库信息在spring进行配置

2 把hibernate里面的sessionFactory创建交给spring管理

具体实现

第一步 导入hibernate的jar包

(1)导入struts2和hibernate的jar包时候有jar冲突问题

在struts2里面有jar包

在hibernate里面有jar包

删除低版本的jar包

(2)导入spring整合持久化层框架需要导入jar包

第二步 搭建hibernate环境搭建

1 创建实体类

2 配置实体类映射关系

3 创建核心配置文件

第三步 把hibernate核心配置文件数据库配置,在spring进行配置

(1)把hibernate核心文件中数据库配置去掉了,在spring配置

第四步 把hibernate的sessionFactory交给spring配置

(1)服务器启动时候,加载spring配置文件,把配置文件中对象创建

(2)把sessionFactory对象创建在spring配置

(3)因为创建sessionFactory代码不是new出来的,而是多行代码实现的

(4)spring里面针对上面情况,封装类,配置类对象可以创建sessionFactory

第五步 在dao里面使用hibernateTemplate

(1)在dao得到hibernateTemplate的对象

(2)调用hibernate模板里面save方法添加

没有配置事务,做操作时候,出现异常

第六步 配置事务

六、HibernateTemplate介绍

1 HibernateTemplate对hibernate框架进行封装,

直接调用HibernateTemplate里面的方法实现功能

2 HibernateTemplate常用的方法

  • Serializable save(Object entity) :添加操作
  • void update(Object entity) :修改操作
  • void delete(Object entity) :删除操作
  • <T> T get(Class<T> entityClass, Serializable id) :根据id查询
  • <T> T load(Class<T> entityClass, Serializable id): 根据id查询

  • List find(String queryString, Object... values) :查询操作的方法

(1)第一个参数是 hql语句

(2)语句参数值

七、SSH框架整合过程

第一步 导入jar包

第二步 搭建struts2环境

(1)创建action,创建struts.xml配置文件,配置action

(2)配置struts2的过滤器

第三步 搭建hibernate环境

(1)创建实体类

(2)配置实体类和数据库表映射关系

(3)创建hibernate核心配置文件

- 引入映射配置文件

第四步 搭建spring环境

(1)创建spring核心配置文件

(2)让spring配置文件在服务器启动时候加载

- 配置监听器

- 指定spring配置文件位置

第五步 struts2和spring整合

(1)把action在spring配置(action多实例的)

(2)在struts.xml中action标签class属性里面写 bean的id值

第六步 spring和hibernate整合

(1)把hibernate核心配置文件中数据库配置,在spring里面配置

(2)把hibernate的sessionFactory在spring配置

第七步 在dao里面使用hibernateTemplate

(1)在dao注入hibernateTemplate对象

(2)在hibernateTemplate对象中注入sessionFactory

第八步 配置事务

出现异常时候,

第一行 异常信息

下面 cased by :

八、整合其他方式

1 spring整合hibernate时候,可以不写hibernate核心配置文件

(1)把hibernate核心配置文件中,基本信息配置和映射引入都放到spring配置

九、Spring分模块开发

1 在spring里面配置多个内容,造成配置混乱,不利用维护

2 把spring核心配置文件中,一部分配置放到单独的配置文件中,在spring核心配置文件中引入单独配置文件

问题:

1 在struts2里面和hibernate里面都有jar包

Jar包冲突问题,删除其中的一个,删除低版本的jar包

2 如果把数据库信息配置在hibernate里面进行配置

(1)出现异常,事务里面找不到数据源了

(2)数据库配置在spring里面配置

SSH练习功能

1 客户管理

(1)crud操作

2 联系人管理

(1)配置一对多操作

(2)添加联系人

- 选择所属客户

- struts2实现文件上传

(3)联系人列表

(4)修改联系人

3 客户拜访管理

(1)多对多配置拆分成两个有对多实现

4 综合查询

(1)多条件组合查询

5 统计分析

(1)hibernateTemplate调用底层sql实现功能

6 其他知识

(1)svn版本控制工具使用

(2)代码重构

- baseDao抽取

(3)插件:jquery easyui

- jquery ajax操作

- json数据格式

完成任务

1 搭建ssh整合环境

2 复习知识

(1)jquery ajax操作

(2)json数据格式

Spring 学习04的更多相关文章

  1. Spring学习04(使用注解开发)

    7.使用注解开发 说明:在spring4之后,想要使用注解形式,必须得要引入aop的包. 在配置文件当中,还得要引入一个context约束 <?xml version="1.0&quo ...

  2. Spring学习之——手写Mini版Spring源码

    前言 Sping的生态圈已经非常大了,很多时候对Spring的理解都是在会用的阶段,想要理解其设计思想却无从下手.前些天看了某某学院的关于Spring学习的相关视频,有几篇讲到手写Spring源码,感 ...

  3. Spring学习之——手写Spring源码V2.0(实现IOC、D、MVC、AOP)

    前言 在上一篇<Spring学习之——手写Spring源码(V1.0)>中,我实现了一个Mini版本的Spring框架,在这几天,博主又看了不少关于Spring源码解析的视频,受益匪浅,也 ...

  4. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  5. spring 学习之 bean 的注入方式 property和constructor-arg的使用方式

    spring 学习之 bean 的注入方式 property和constructor-arg的使用方式. bean的注入方式: property 注入是: 通过setxx方法注入. construct ...

  6. JavaScript学习04 对象

    JavaScript学习04 对象 默认对象 日期对象Date, 格式:日期对象名称=new Date([日期参数]) 日期参数: 1.省略(最常用): 2.英文-数值格式:月 日,公元年 [时:分: ...

  7. Java虚拟机JVM学习04 类的初始化

    Java虚拟机JVM学习04 类的初始化 类的初始化 在初始化阶段,Java虚拟机执行类的初始化语句,为类的静态变量赋予初始值. 在程序中,静态变量的初始化有两种途径: 1.在静态变量的声明处进行初始 ...

  8. Spring学习之AOP总结帖

    AOP(面向方面编程),也可称为面向切面编程,是一种编程范式,提供从另一个角度来考虑程序结构从而完善面向对象编程(OOP). 在进行 OOP 开发时,都是基于对组件(比如类)进行开发,然后对组件进行组 ...

  9. Spring学习之第一个AOP程序

    IOC和AOP是Spring的两大基石,AOP(面向方面编程),也可称为面向切面编程,是一种编程范式,提供从另一个角度来考虑程序结构从而完善面向对象编程(OOP). 在进行 OOP 开发时,都是基于对 ...

随机推荐

  1. 二叉排序树类的: C++ 实现

    #include<iostream> using namespace std; template<class T> struct TreeNode { T element; T ...

  2. Java之JSON操作(gson)

    使用gson包操作JSON数据. 依赖包:gson-2.8.2.jar <dependency> <groupId>com.google.code.gson</group ...

  3. Codeforces ECR47F Dominant Indices(线段树合并)

    一个比较显然的做法:对每棵子树用线段树维护其中的深度,线段树合并即可. 本来想用这个题学一下dsu on tree,结果还是弃疗了. #include<iostream> #include ...

  4. LOJ #2538. 「PKUWC 2018」Slay the Spire (期望dp)

    Update on 1.5 学了 zhou888 的写法,真是又短又快. 并且空间是 \(O(n)\) 的,速度十分优秀. 题意 LOJ #2538. 「PKUWC 2018」Slay the Spi ...

  5. git pull报“unable to update local ref”解决方案

    使用git pull拉取代码的时候,无法拉取最新代码,报"unable to update local ref"错误. 除了重新clone一份代码外,还可以使用如下解决方案: 1. ...

  6. Leetcode 371.两整数之和 By Python

    不使用运算符 + 和 - ,计算两整数 a .b 之和. 示例 1: 输入: a = 1, b = 2 输出: 3 示例 2: 输入: a = -2, b = 3 输出: 1 思路 比如\(5+6=1 ...

  7. [luogu3979][bzoj3083]遥远的国度

    [luogu传送门] [bzoj传送门] 题目描述 zcwwzdjn在追杀十分sb的zhx,而zhx逃入了一个遥远的国度.当zcwwzdjn准备进入遥远的国度继续追杀时,守护神RapiD阻拦了zcww ...

  8. Android学习系列(17)--App列表之圆角ListView(续)

    http://www.cnblogs.com/qianxudetianxia/archive/2011/09/19/2068760.html   本来这篇文章想并到上篇Android学习系列(16)- ...

  9. Luogu 1970 NOIP2013 花匠 (贪心)

    Luogu 1970 NOIP2013 花匠 (贪心) Description 花匠栋栋种了一排花,每株花都有自己的高度.花儿越长越大,也越来越挤.栋栋决定把这排中的一部分花移走,将剩下的留在原地,使 ...

  10. A1024. Palindromic Number

    A number that will be the same when it is written forwards or backwards is known as a Palindromic Nu ...