Spring+Struts2+Hibernate3 整合详解
需积分: 0 135 浏览量
更新于2024-09-15
收藏 363KB DOC 举报
"Struts2+Spring3+Hibernate3整合文档"
本文档主要阐述了如何在Java Web开发中整合Struts2、Spring3和Hibernate3这三个流行的技术框架。这种整合通常用于构建MVC(Model-View-Controller)架构的应用程序,以实现更好的分层和解耦。
### 1. Spring + Hibernate 整合
在Spring与Hibernate的整合中,Spring接管了对Hibernate的管理,包括SessionFactory和Session的生命周期。这使得我们不再需要在hibernate.cfg.xml文件中配置数据库连接信息,而是将这些配置转移到Spring的配置文件中。
#### (1) 配置`applicationContext-common.xml`
在`applicationContext-common.xml`文件中,你需要配置以下内容:
- 数据源(DataSource):用于连接数据库,通常使用Apache Commons DBCP或C3P0等库。
- SessionFactory:配置Hibernate的SessionFactory,这里会引用数据源,并指定实体类的包名以便扫描。
- Hibernate事务管理器(PlatformTransactionManager):Spring提供了一种声明式事务管理的方式,通过这个事务管理器实现。
#### (2) 使用HibernateDAOSupport和HibernateTemplate
- `HibernateDAOSupport`:这是一个抽象基类,提供了对Session和SessionFactory的访问方法,以及获取`HibernateTemplate`实例的`getHibernateTemplate()`方法。
- `HibernateTemplate`:提供了一系列预定义的持久化操作方法,如增删查改,简化了数据库操作。
在实际应用中,你可以创建一个DAO类,继承自`HibernateDAOSupport`,然后利用`HibernateTemplate`进行数据操作。
### 2. Spring + Struts2 整合
#### (1) 配置`web.xml`
- Spring的上下文监听器(ContextLoaderListener):负责加载Spring的根上下文(`applicationContext.xml`)。
- Struts2的过滤器(`filter-class: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`):处理HTTP请求并执行相应的Action。
#### (2) 配置`struts.xml`
在`struts.xml`文件中,通过Spring插件(`<result-type>`类型为`spring`),我们可以使用Spring的IOC容器来管理Struts2的Action。Action类不再直接实例化,而是引用在`applicationContext.xml`中定义的bean ID。
#### (3) 注意事项
由于Struts2的Action默认是每次请求创建一个新的实例,但Spring使用的是单例模式管理bean,这可能导致问题。为了解决这个问题,你需要在`applicationContext.xml`中配置Action类为 prototype 或 request 基本作用域,确保每个请求都有一个新的Action实例。
整合这三个框架的主要目的是为了充分利用它们的优势:Spring提供依赖注入和事务管理,Hibernate处理数据持久化,而Struts2则负责业务逻辑和视图的交互。通过这种方式,开发者可以创建出更加灵活、可维护的Web应用程序。
217 浏览量
2019-03-14 上传
2009-12-03 上传
107 浏览量
2012-04-06 上传
2011-07-31 上传
2015-12-17 上传
点击了解资源详情
2014-03-25 上传
0o憨胖o0
- 粉丝: 86
- 资源: 35
最新资源
- freemodbus-master_spelltdl_tonef1m_FreeModbusMaster_freemodbus-m
- google-homepage
- 标签:React的标签组件,专为移动设备而设计。支持手势和大量标签
- CPSC359
- CampaignFormLCAPI:闪电组件-元数据API版本
- 程序_rhyme4gp_BP神经网络_bp神经网络matlab
- Aplikasi-MVC-Data-Mahasiswa-CRUDS:Aplikasi MVC adalah sebuah aplikasi yang menerapkan konsep模型,视图,控制,dengan OOP(面向对象编程)PHP
- device_xiaomi_begonia
- 我的工作窗格
- gino:GINO不是ORM-SQLAlchemy核心上的Python异步ORM
- triangle.rar
- Active Object real-time OS:AO RTOS是基于Active Object并发模型的小型实时OS-开源
- Simtab-crx插件
- 测试提交约定:自动测试提交约定
- React-native-chat-app:使用socket.ioReact本机简单聊天应用程序
- 易语言超级列表框拖动多选改进