SSH整合方式一:无障碍整合
一.SSH整合
- 创建web项目,引入jar包
- Struts2的jar包
- - struts-2.3.24\apps\struts2-blank\WEB-INF\lib\*.jar
- - Struts2中一些需要了解的包
struts2-convention-plugin-2.3.24.jar ---Struts2的注解开发包
struts2-json-plugin-2.3.24.jar ---Struts2的整合AJAX的开发包
struts2-spring-plugin-2.3.24.jar ---Struts2的整合Spring的开发包
- Hibernate的jar包
- - Hibernate开发的必须的包 hibernate-release-5.0.7.Final\lib\required\*.jar
- - MySQL驱动包 mysql-connector-java-5.1.7-bin.jar
- - 日志记录
- - 使用C3P0连接池
- - 注意:Struts2和Hibernate都引入了一个相同的jar包(javassist包),删除一个 - Spring的jar包
- - IOC的开发
- - AOP的开发
- - JDBC模板的开发
- - 事务管理
- - 整合web项目的开发
- - 整合单元测试的开发
- - 整合hibernate的开发
- Struts2的jar包
- 引入配置文件
- Struts2的配置文件
- web.xml //核心过滤器
- struts.xml - Hibernate的配置文件
- hibernate.cfg.xml //不需要配置与线程绑定的session, 事务隔离级别
- 映射文件 *.hmb.xml
- 日志记录 - Spring的配置文件
- web.xml //核心监听器
- applicationContext.xml
- 日志记录 . //与2中日志记录相同,一份即可 log4j.properties
- Struts2的配置文件
- 创建相应的包结构
- 创建相关的类
- 引入相关的页面
- 修改add.jsp,提交数据到Action
- Spring整合Struts2方式一:Action由Struts2自身创建
- 编写Action,
- 配置Action,在struts.xml中配置
- 在Action中引入Service
- - 传统方式
- -进行Spring和Struts2的整合:
引入struts2-spring-plugin-2.3.24.jar
这个包中有个配置文件,打开了一个常量
在Struts2中只要开启这个常量就会引发下面的常量生效
//让Action按名称自动注入Service
- - 将Servcie交给Spring管理
- Action注入Service
- Spring整合Struts2方式二:Action交给Spring管理 (推荐)
- 引入插件包
struts2-spring-plugin-2.3.24.jar - 将Action交给Spring
- 在struts.xml配置Action //class中写的是spring配置中的id
- 注意:
- - 需要配置Action为多例的 ,在8.2中bean标签,添加一个属性scope="prototype"
- - 需要手动注入Service ,因为Action交给Spring管理了,在bean标签内添加property标签,注入customerService
- 引入插件包
- Service调用DAO
- 将DAO交给Spring管理
- 在Service注入DAO
- Spring整合Hibernate框架
- 创建数据库和表
- 编写实体和映射
- Spring和Hibernate整合
- 在Spring的配置文件中,引入Hibernate的配置的信息 - 在Spring和Hibernate整合后,Spring提供了一个Hibernate的模板类简化Hibernate的开发
- 改写DAO,继承HibernateSupport
- 配置时在DAO中直接注入sessionFactory
- 在DAO中使用Hibernate的模板完成保存操作
- 配置Spring的事务管理
- 配置事务管理器
- 开启注解事务
- 在业务层使用注解
- 配置事务管理器
SSH整合方式二:不带Hibernate配置文件
一.SSH整合
- Hibernate配置文件内容
- 数据库连接的配置
- Hibernate的相关的属性的配置
- - 方言,显示SQL,格式化SQL,建表方式
- C3P0连接池
- 映射文件 - 将Hibernate的配置交给Spring
Hibernate的模板的使用
一.常用方法
- 保存操作 save(Object obj);
- 修改操作 update(Object obj);
- 删除操作 delete(Object obj);
- 查询操作:
- 查询一个 get(Class c ,Serializable id) load(Class c ,Serializable id)
- 查询多个
List find(String hql, Object...args)
List findByCriteria(DetachedCriteria dc)
List findByCriteria(DetachedCriteria dc ,int firstResult , int maxResults)
List findByNamedQuery(String name , Object...args)
延迟加载问题的解决
一.Spring提供了延迟加载的解决方案
- 出现场景:
- 使用load方法查询某一个对象的时候(不常用)
- 查询到某个对象以后,显示其关联对象
- 解决办法:配置过滤器