三大框整合

wangjianme 贡献于2017-01-08

作者 wangjian  创建于2014-10-29 12:08:00   修改者wangjian  修改于2016-05-12 12:03:43字数9222

文档摘要:Struts2、Spring、Hibernate三大框架一直以来是公司热衷使用的框架。现将三大框架整合全部过程做成文档,供小伙伴们参考。希望对正在学习这三个框架的学生有所帮助。
关键词:

三大框架整合 作者:一叶知秋 版权归个人和公司所有 Struts2、Spring、Hibernate三大框架一直以来是公司热衷使用的框架。现将三大框架整合全部过程做成文档,供小伙伴们参考。希望对正在学习这三个框架的学生有所帮助。 三大框架整合的方案: 1:配置的方式(本处先以这种方式为主,后期会送上注解的方式)。 2:注解的方式。 整合的主要目的,就是使用Struts2的mvc层。 使用spring管理在Java项目的所有类。进行统一的单例管理。同时管理Hibernate的事务。 使用Hibernate的ORM来操作表数据。同时使用Hibernate的二级缓存。 思想: 1:ssh最后是一个web项目,所以必须要从头开始就按web项目的方式整合。 2:Struts2整合spring Struts2提供了一个插件包,为了引用spring Bean. Spring整合Hibernate 整个过程: 1:创建struts2项目->导入spring的jar包- > 配置spring的配置文件 - >导入hibernate的包 - 》配置Hibernate的配置文件-》配置hibernate的事务 - 》在这个框架下开发一个CRUD的示例. 步1:创建一个Struts的项目 1:导入Struts的包。 2:在web.xml中配置struts2的过虑器 3:添加struts.xml配置文件 步2:添加spring的包 1:导入spring的包 2:在web.xml中添加spring的核心监听器。用于读取Spring的配置文件。 3:添加spring的配置文件,必须要在web.xml中声明spring的配置文件的位置,让监听器来获取这个位置。 4:开发一个Action 被spring管理。在struts.xml中 步1 导入struts-spring-plugin.jar 步2:导入spring的所有包 步3:在web.xml中添加spring的监听器 org.springframework.web.context.ContextLoaderListener 当添加了面的配置以后,默认就会读取/WEB-INF/applicationContext.xml默认的spring的配置文件。 步4:添加自己的spring的配置文件 两种方式: 1:直接在web-inf目录下添加applicationContext.xml文件。spring配置的主文件。 以后再有更多的spring的配置文件 则可以 在applicationContext.xml中通过方式来导入。 2:指定其他的配置文件,通过在web.xml中配置全局的参数 contextConfigLocation classpath:spring-pubs.xml 步3:可选的测试 - 配置一个Action测试 以下是spring的配置: 以下的是Struts的配置: /WEB-INF/views/example/example.jsp 给struts添加新的配置文件 给spring添加新的配置文件 配置上prototype以后,则运行的结果为: name is:Alex Hello,这个类应该是多列的:cn.ssh.example.action.ExampleAction@1cd5fac name is:null Hello,这个类应该是多列的:cn.ssh.example.action.ExampleAction@dc9e22 name is:null Hello,这个类应该是多列的:cn.ssh.example.action.ExampleAction@1fdb799 到目前为止项目的结构是: ssh src struts.xml文件 struts2默认的配置文件 spring-pubs.xml - spring在web.xml中配置的配置文件 cn example spring-example.xml - 这个example模块下的配置文件 struts-example.xml - 这个模拟的配置文件 action ExampleActioin.java - 一个测试用的Action类 WebContent WEB-INF web.xml 步4:可选 - 请配置上日志 1:添加log4j.jar 2:添加log4j.properties 步5:整合Hibernate 步1:要要求的包是 1:spring-orm/jdbc/tx.jar - >spring整合hibernate的 2:Hiernate.jar - > Hibernate的包。 3:mysql-connection.jar 步2:创建hibernate.cfg.xml文件 里面是空的,也不会在儿连接数据库: 步3:创建数据连接池 c3p0且使用spring连接数据库 、 所有一次性的配置,在公司里面,都叫统一的,公共的配置。所以,配置到公共的配置文件中: 步4:创建SessionFactory 在Spring整合Hibernate的过程中,由spring帮助用户通过读取Hibernate.cfg.xml文件,创建SessionFactory. 通过:LocalSessionFactoryBean: 步6:可选的,操作数据库的示例 步1:创建表 CREATE TABLE example_( id_ VARCHAR(32) PRIMARY KEY, name_ VARCHAR(30), age_ INT ); 步2:创建JavaBean package cn.ssh.example.domain; import java.io.Serializable; public class Example implements Serializable { private static final long serialVersionUID = 1L; private String id; private String name; private Integer age; } 步3:添加Example.hbm.xml 步4:将Example.hbm.xml文件配置到Hibernate.cfg.xml中去 步5:给example模块添加service/dao 且是在Dao中注入SessionFactory 操作数据库, 给Service注入Dao 按面向接口的方式来开发。 步6:给Action注入Service 以下有背景的是新添加的内容: package cn.ssh.example.action; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; import cn.ssh.example.domain.Example; import cn.ssh.example.service.IExampleService; public class ExampleAction extends ActionSupport implements ModelDriven { private static final long serialVersionUID = -4737852576346722706L; private String name; //给Action注入Service private IExampleService service; public void setService(IExampleService service) { this.service = service; } private Example example = new Example(); @Override public Example getModel() { return example; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String execute() throws Exception { System.err.println("name is:"+name); System.err.println("Hello,这个类应该是多列的:"+this); //当用户调用保存时 service.save(example); return SUCCESS; } } 上面的则说明,三层操作框架的类都已经开发完成,则应该将所有类,配置到example模块的 spring的配置文件中去。 步7:在spring-example.xml文件中声明上面类 步8:测试保存 就是输入地址传递Example要求的参数 或是开发一个表单,传递Example所要求的参数。 地址: http://localhost/ssh/example.action?name=Jack&age=90 检查数据库中的是否有刚才的记录: 如果有就叫成功了。 步9:添加一个配置,输出sql语句 true 再做一次测试: http://localhost/ssh/example.action?name=Mary&age=89 查看控制台: Hibernate: insert into example_ (name_, age_, id_) values (?, ?, ?) 查看数据表: 步10:问题 上面的问题是 1:没有事务。所以在dao里面自己控制了事务。 2:下面使用aop的方式来控制事务(重点) 步7:配置事务 在spring公共的配置文件中,使用aop管理事务: 步1:添加aopalliance-1.0.0.jar用于配置 步2:添加aop的配置 里面新添加的配置如下: 步3:修改Dao的操作为获取当前的Session /** * 保存这个对象,保存成功以后返回这个对象
* 目前还是手工控制的事务,下一步的操作,就使用aop管理事务 */ public Example save(Example example) { //获取当前被ThreadLocal维护的那个Session Session session = sessionFactory.getCurrentSession(); session.save(example); return example; } 步4:再测试查看是否是在没有手工控制事务的情况下也可以有事务了 执行以下的地址: http://localhost/ssh/example.action?name=Jerry&age=45 检查命令行的输出:如果有了sql的输出,则是执行提交了数据: Hibernate: insert into example_ (name_, age_, id_) values (?, ?, ?) 数据表中添加成功: 【后续的工作:1:配置二级缓存】 步8:配置二级缓存 思想就是添加jar包,添加ehcache.xml缓存配置文件- > 在hibernate.cfg.xml文件中指定对了哪一个实体进行二级缓存 ->通过查询测试,是否二级缓存生效——多次查询一个对象,检查是否会命中数据库,即输出几个sql语句。如果有个,则二级缓存生效。 步1:添加ehcache.jar包 步2:添加ehcache的配置文件 配置文件的目录: 配置文件的源代码: 步3:在Hibernate.cfg.xml文件中启用二级缓存 启用二级缓存包含: 1:启用二级缓存。 2:启用二级查询缓存。 3:添加二级缓存的RangeFactory类。 true true true org.hibernate.cache.ehcache.EhCacheRegionFactory 步4:在hibernate.cfg.xml配置对某个实体的二级缓存 步5:测试多次查询 在dao/service/action中都添加查询的功能,查询一个唯一的Example对象根据id: 以下是在Dao中增加的查询,在Service中、action中同样增加调用的过程: public Example query(Example query) { Session session = sessionFactory.getCurrentSession(); Example e = session.get(Example.class, query.getId()); return e; } 以下是以下的多次请示查询,如果只出现一次sql的语句,即二级缓存生效: http://localhost/ssh/example!query.action?id=4028816954a4a0be0154a4a0d30a0000 【全部的配置完成】

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档