Spring 学习04
一、上节内容回顾
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的更多相关文章
- Spring学习04(使用注解开发)
7.使用注解开发 说明:在spring4之后,想要使用注解形式,必须得要引入aop的包. 在配置文件当中,还得要引入一个context约束 <?xml version="1.0&quo ...
- Spring学习之——手写Mini版Spring源码
前言 Sping的生态圈已经非常大了,很多时候对Spring的理解都是在会用的阶段,想要理解其设计思想却无从下手.前些天看了某某学院的关于Spring学习的相关视频,有几篇讲到手写Spring源码,感 ...
- Spring学习之——手写Spring源码V2.0(实现IOC、D、MVC、AOP)
前言 在上一篇<Spring学习之——手写Spring源码(V1.0)>中,我实现了一个Mini版本的Spring框架,在这几天,博主又看了不少关于Spring源码解析的视频,受益匪浅,也 ...
- Python学习--04条件控制与循环结构
Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...
- spring 学习之 bean 的注入方式 property和constructor-arg的使用方式
spring 学习之 bean 的注入方式 property和constructor-arg的使用方式. bean的注入方式: property 注入是: 通过setxx方法注入. construct ...
- JavaScript学习04 对象
JavaScript学习04 对象 默认对象 日期对象Date, 格式:日期对象名称=new Date([日期参数]) 日期参数: 1.省略(最常用): 2.英文-数值格式:月 日,公元年 [时:分: ...
- Java虚拟机JVM学习04 类的初始化
Java虚拟机JVM学习04 类的初始化 类的初始化 在初始化阶段,Java虚拟机执行类的初始化语句,为类的静态变量赋予初始值. 在程序中,静态变量的初始化有两种途径: 1.在静态变量的声明处进行初始 ...
- Spring学习之AOP总结帖
AOP(面向方面编程),也可称为面向切面编程,是一种编程范式,提供从另一个角度来考虑程序结构从而完善面向对象编程(OOP). 在进行 OOP 开发时,都是基于对组件(比如类)进行开发,然后对组件进行组 ...
- Spring学习之第一个AOP程序
IOC和AOP是Spring的两大基石,AOP(面向方面编程),也可称为面向切面编程,是一种编程范式,提供从另一个角度来考虑程序结构从而完善面向对象编程(OOP). 在进行 OOP 开发时,都是基于对 ...
随机推荐
- OSI的七层模型介绍
应用层: 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 表示层: 数据格式化,代码转换,数据加密 没有协议. (信息的语法语义以及它们的 ...
- Linux标准输入、输出和错误和文件重定向 专题
当我们在shell中执行命令的时候,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件.由于文件描述符不容易记忆,shell同时也给出了相应的文件名. 下面就是这些文件描述符及它们通常所 ...
- [转帖]看完这篇文章你还敢说你懂JVM吗?
看完这篇文章你还敢说你懂JVM吗? 在一些物理内存为8g的服务器上,主要运行一个Java服务,系统内存分配如下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约 600m,Linux自身使用 ...
- React componentDidMount
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- Mysql索引结构及常见索引的区别
一.Mysql索引主要有两种结构:B+Tree索引和Hash索引 Hash索引 mysql中,只有Memory(Memory表只存在内存中,断电会消失,适用于临时表)存储引擎显示支持Hash索引,是M ...
- python之查询指定目录下的最新文件
使用os模块查询指定目录下的最新文件 import os # 输入目录路径,输出最新文件完整路径 def find_new_file(dir): '''查找目录下最新的文件''' file_lists ...
- poj1062昂贵的聘礼(枚举+最短路)
题意:就是一个点能够被另一个点取代,通过花费一定的金币,注意就是你和某个人交易了,如果这个人的等级和酋长的等级差的绝对值超过m,酋长就不会和你交易了: 思路:这里要注意到,我们最终的目的是找到一条最短 ...
- mysql 创建表指定 字符类型与存储引擎
DROP TABLE IF EXISTS apilog; /*==============================================================*/ /* T ...
- MT【65】寻找零点
已知$f(x)=3ax^2+2bx+b-a$($a,b$不同时为零). 求证:$f(x)$在$(-1,0)$内至少有一个零点. 证明:$f(-\frac{1}{3})f(-1)=-\frac{1}{3 ...
- 自学Zabbix3.12.5-动作Action-Condition配置
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 3.12.5 自学Zabbix3.12.5-动作Action-Condition配置 报警,肯定是 ...