整合原理
web开发分三层
spring为Struts2创建Action对象,对其实现 DI (依赖注入) 和 IOC (控制反转)。
spring与hibernate整合,使用spring管理SessionFactory,spring负责session维护和AOP事务。
.
导包(39个)
hibernate
- hibernate/lib/required
- hibernate/lib/jpa ( java persist api java的持久化规范(接口))
- 数据库驱动
struts2
struts-blank.war/WEB-INF/lib/*
注意:javassist-3.18.1-GA.jar包与hibernate中的重复,选择版本新的保留一个即可。struts整合spring插件包
注意:这个包一旦导入,那么struts2在启动时就会寻找spring容器.找不到将会抛出异常
spring
- 基本:4+2
core|beans|context|expression|logging|log4j - 整合web:web包
spring-web - 整合aop:4个
spring-aop|spring-aspect|aop联盟|aopweaving - 整合Hibernate和事务:4个
spring-jdbc|spring-tx|c3p0|spring-orm - 正junit4测试:test包
spring-test
myeclipse自带jstl标签库。
单独配置spring容器
- 创建配置文件,并导入约束(4个)
beans|context|aop|tx
可以写个action类测试下。
单独配置struts2
配置struts2主配置文件
配置struts2核心过滤器到web.xml
struts2与spring整合
导包(已经导入)
struts2-spring-plugin-2.3.24.jar配置常量
整合
整合方案1:struts2自己创建action,spring负责组装依赖属性
不推荐理由:最好由spring完整管理action的生命周期.spring中功能才应用到Action上.整合方案2:spring负责创建action以及组装.
applicationContext.xml
struts.xml
单独配置hibernate
导入实体类&orm元数据
配置主配置文件
spring整合hibernate
整合原理
将sessionFactory对象交给spring容器管理在spring中配置sessionFactory
配置方案一:
配置方案二:
spring整合c3p0连接池
- 配置db.properties
- 引入连接池到spring中
- 将连接池注入给SessionFactory
spring整合hibernate环境操作数据库
- Dao类创建:继承HibernateDaoSupport
注意:在导包时一定要导入与 Hibernate 版本相同的包。 - hibernate模板的操作
execute
findByCriteria
- spring中配置dao
spring的aop事务
- 准备工作
- xml配置aop事务
配置通知
配置织入
- 注解配置aop事务
开启注解事务
Service类中使用注解
扩大session作用范围
为了避免使用懒加载时出现no-session问题.需要扩大session的作用范围
配置filter
确保任何 filter 在 struts2 的 filter 之前
注意在导包时,要导入对应的版本。