1. SSH三大框架整合
1.1 整合说明
- 独立式整合指的是三个框架都使用自己的配置文件。
- 引入式整合指的是hibernate主配置文件中的内容都配置到spring配置文件中
- 在整合过程中,确保每步都运行成功,然后在继续往下做。
- 整合中使用的案例是客户的保存和列表查询操作。
- 后面的三种整合方式都基于1.2中的环境准备。
1.2 环境准备
1.2.1 创建java web工程
1.2.2 创建数据库和表结构
1 | create database ssh; |
1.2.3 编写实体类
1 | /** |
1.2.4 编写业务层接口和实现类
1 | /** |
1 | /** |
1.2.5 编写持久层接口和实现类
1 | /** |
1 | /** |
2. 基于XML的独立式整合
2.1 保证spring框架在web工程中独立运行
2.1.1 拷贝spring的ioc,aop和事务控制三组jar包
ioc:
aop:
事务控制:
2.1.2 编写spring配置文件并导入约束
1 |
|
2.1.3 把业务层和持久层配置到文件中
1 | <!-- 把资源交给spring来管理 --> |
2.1.4 测试spring能否独立运行
1 | /** |
2.2 保证hibernate框架能够在web工程中独立运行
2.2.1 拷贝hibernate必备jar包
hibernate基本jar包:
c3p0:
2.2.2 编写实体类的映射文件
1 |
|
2.2.3 编写hibernate主配置文件
1 |
|
2.2.4 编写测试类-测试保存客户
1 | /** |
2.3 整合spring和hibernate框架
2.3.1 明确
- Spring和Hibernate的整合就是spring接管SessionFactory的创建
- Spring针对Hiberante的操作有一个封装的对象HibernateTemplate
- 和JdbcTemplate一样,HibernateTemplate也有一个HibernateDaoSupport
- HibernateTemplate和HibernateDaoSupport都在spring-orm-4.2.4.RELEASE.jar中
- 我们Dao采用继承HiberanteDaoSupport的方式编写,它一样不能用于注解配置。
2.3.2 整合步骤
2.3.2.1 在spring配置文件中配置SessionFactory
1 | <!-- 配置sessionFactory:让spring接管sessionFactory的创建 |
2.3.2.2 改造Dao继承HibernateDaoSupport
1 | /** |
2.3.2.3 在spring配置文件中给Dao注入SessionFactory
1 | <!-- 配置dao --> |
2.3.2.4 测试
1 | /** |
1 | 测试结果: |
2.3.2.5 修改把Session绑定到当前线程上
1 | <!-- 是hibernate把session绑定到当前线程上的配置 |
2.3.3 配置Spring的事务
2.3.3.1 配置事务管理器并注入SessionFactory
1 | <!-- 配置事务管理器 --> |
2.3.3.2 配置事务的通知及通知的属性
1 | <!-- 配置事务的通知 --> |
2.3.3.3 配置AOP建立切入点表达式和事务通知的关系
1 | <!-- 配置aop --> |
2.4 保证struts2框架能够在web工程中独立运行
2.4.1 拷贝struts2的必备jar包
2.4.2 编写struts.xml文件并导入约束
1 | <?xml version="1.0" encoding="UTF-8"?> |
2.4.3 在web.xml中配置struts2的核心过滤器
1 | <!-- 配置struts2和核心过滤器 --> |
2.4.4 导入jsp页面
2.4.5 修改menu.jsp
1 | <A class=style2 href="${pageContext.request.contextPath}/customer/addUICustomer.action" target=main>- 新增客户</A> |
2.4.6 在struts.xml中配置action
1 | <!-- 配置动作 --> |
2.4.7 编写动作类和方法
1 | /** |
2.4.8 测试
1 | 运行结果:通过点击【新增客户】可以跳转到客户添加页面 |
2.5 整合spring和struts2
2.5.1 明确
- spring整合struts2就是让spring接管action的创建
- action是多例的,配置到spring中需要设置scope属性为多例
2.5.2 整合步骤
2.5.2.1 拷贝spring整合struts的jar包
2.5.2.2 在action中使用构造函数获取Service对象
1 | /** |
2.5.2.3 测试
1 | 运行结果:查询客户列表测试通过。 |
2.6 优化配置
2.6.1 配置spring的监听器
1 | 在上面2.5.2.2小节中有这么一句: |
在web.xml中配置监听器:
1 | <listener> |
2.6.2 配置指定spring配置文件的位置
1 | <!-- 手动指定spring的配置文件位置,需要使用ServletContext的初始化参数 --> |
2.6.3 分文件编写spring配置
我们写到这里,其实搭建环境已经基本结束了,但是发现spring的配置文件杂乱无章,使我们在找配置的时候,很难一下找到。所以我们采用分配置文件编写的方式。
2.6.3.1 编写主配置文件引入其他配置文件
1 |
|
2.6.3.2 编写针对需求的配置文件applicationContext-customer.xml
1 |
|
2.6.3.3 编写数据库连接的配置文件applicationContext-jdbc.xml
1 |
|
2.6.3.4 编写事务控制的配置文件applicationContext-tx.xml
1 |
|
2.6.4 配置指定struts2配置文件位置
我们的spring和hibernate配置文件都存到了src/config/的对应包中了,只有struts2配置文件还在类的根路径下,它也可以通过配置的方式指定struts.xml的位置。配置的是过滤器的初始化参数。初始化参数的name和value都是固定写法。
1 | <!-- 配置struts2和核心过滤器 --> |
2.6.5 分文件编写struts2配置文件
当我们后面做的模块越来越多,struts2一个配置文件写起来也会杂乱无章,所以我们也可以把struts2的配置文件分开编写。
2.6.5.1 编写struts2的主配置文件struts.xml
1 |
|
2.6.5.2 针对不同模块编写不同的配置文件struts-customer.xml
1 |
|
2.6.6 管理Action的两种方式
2.6.6.1 让struts2自己来管理
此种方式就是在action标签的class属性中提供动作类的全限定类名。
1 | <action name="addUICustomer" class="com.wgy.web.action.CustomerAction" method="addUICustomer"> |
2.6.6.2 让spring来管理(实际开发中采用的方式)
此种方式就是在spring配置文件中配置Action,在struts2配置文件action标签的class属性里写bean的id。
spring配置文件:
1 | <!-- 配置action --> |
struts2配置文件:
1 | <action name="addUICustomer" class="customerAction" method="addUICustomer"> |
3. 基于XML的引入式整合
3.1 明确
引入式整合就是把hibernate.cfg.xml中的配置都挪到spring的配置文件中
3.2 配置方式
1 | <!-- 和jdbc配置相关的 --> |
4. 基于注解的整合
4.1 明确
- 注解整合仍然使用上面的环境,就是把xml的配置全部换成注解
- spring的注解整合有两种方式,一种是用xml文件,一种是纯注解。
- hibernate注解整合是把实体类映射改为JPA注解映射
4.2 整合步骤-spring使用xml文件
4.2.1 spring配置使用注解实现
4.2.1.1 在spring配置文件中配置要扫描的包
1 | <!-- 配置spring运行要扫描的包 --> |
4.2.1.2 把action,service和dao都用注解配置
1 | /** |
1 | /** |
1 | /** |
4.2.1.3 在spring配置文件中配置HiernateTemplate
1 | <!-- 配置hibernateTemplate --> |
4.2.1.4 在spring配置文件中配置事务管理器
1 | <!-- 配置事务管理器 --> |
4.2.1.5 在spring配置文件中开启spring对注解事务的支持
1 | <!-- 开启spring对注解事务的支持 --> |
4.2.1.6 在客户的业务层实现类上使用@Transactional注解
1 | /** |
4.2.2 hibernate映射使用注解配置实现
4.2.2.1 实体类映射注解配置
1 | /** |
4.2.2.2 spring中SessionFactory配置修改
1 | <!-- 配置sessionFactory --> |
4.2.3 struts2配置使用注解实现
4.2.3.1 导入struts2注解的jar包
4.2.3.2 使用注解配置Action
1 | /** |
4.2.3.3 指定struts2开发模式
1 | <!-- 配置struts2和核心过滤器 --> |
-------------本文结束感谢您的阅读-------------
本文作者:
Wgy
本文标题: SSH
本文链接: https://wgy1993.gitee.io/archives/782a8ece.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 进行许可。转载请注明出处!
本文标题: SSH
本文链接: https://wgy1993.gitee.io/archives/782a8ece.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 进行许可。转载请注明出处!
