基于Struts和Hibernate的Web应用开发
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Struts和Hibernate的Web应用开发
王海涛;贾宗璞
【摘要】Model realization of Struts have some problems, such as complex JDBC connecting to database, high coupling between layers and difficult code maintenance, et al. Aiming at these problems, this paper presents a Web application development scheme based on Struts and Hibernate. It really achieves the loose coupling between layers and easy maintenance, reduces the difficulty of development of business model.Through part of development codes and running window of student management system,
it explains the process of integration and proves the feasibility of integrated solutions.%Struts框架在模型部分的实现存在JDBC连接数据库复杂、层间高耦合和难维护等问题.为此,提出一种整合Struts和Hibernate的Web应用开发方案,可实现层间的松散耦合和易维护,降低业务模型开发难度.通过学生管理系统开发实例的部分代码和运行界面说明该方案的整合应用过程,并验证其可行性.【期刊名称】《计算机工程》
【年(卷),期】2011(037)009
【总页数】3页(P112-114)
【关键词】Struts框架;Hibernate框架;对象关系映射;逻辑控制
【作者】王海涛;贾宗璞
【作者单位】河南理工大学计算机学院,河南,焦作,454003;河南理工大学计算机学院,河南,焦作,454003
【正文语种】中文
【中图分类】TP393.1
1 概述
近年来,随着互联网的发展以及Web开发的增加,Web应用开发中普遍要求分离页面显示、业务逻辑和数据处理,降低开发团队的技术成本和分工协作的难度,这些都需要采用新的高效的开发模式。
所以,开源 Struts、Hibernate框架应运而生、已成为目前Web开发的主流,在Struts基础上整合Hibernate框架,解决Struts框架在模型部分中JDBC连接数据库复杂、层间高耦合和难以维护等现象。
本文基于上述开发策略,阐述并证明2个框架的整合过程。
2 Struts和Hibernate框架
2.1 Struts框架
Struts[1]提供了开发基于 MVC应用模式的开源框架,Struts继承了 MVC的各项特性,并将其应用于 Web应用开发中。
Struts提供的组件分为3个部分,包括模型层、视图层和控制器,如图1所示。
图1 Struts工作原理
模型层实现了系统中的业务逻辑,Struts框架为模型部分提供了Action和ActionForm对象。
Action处理器对象封装了具体的处理逻辑和调用业务逻辑模块,并且把请求提交到合适的视图组件以产生响应。
ActionForm组件对象可以通过定义属性描述客户端表单数据。
视图层用于与用户的交互,通常用JSP实现。
Struts提供自定义的标记库,通过这些自定义的标记可以较好地和系统Model部分交互,实现Model部分中的ActionForm的映射,完成对用户数据的封装。
同时,这些自定义标记还提供了如
模板定制等多种显示功能。
控制器用来接收用户的请求,由ActionServlet和Action Mapping对象构成,
核心是一个 Servlet类型的对象 Action Servlet。
Struts清晰地划分了控制部分[2]、事务逻辑和外观视图,让开发者遵循一个统一
的模式进行设计编码,简化了系统后期维护的工作量。
Struts给开发者提供了良
好的页面导航功能,开发者可以通过配置文件Struts-config.xml把握整个系统各部分之间的相互关联,清晰地掌握整个系统的体系结构。
2.2 对象关系映射
对象关系映射(Object Relational Mapping, ORM)是将Java对象的状态映射到
数据库上,即将Java中的对象与对象关系对应为关系数据库中表与表之间的关系,以便提供透明的持久化操作。
ORM的目标是简化持久化业务模型中的实体对象,使开发人员避免编写数据访问的代码。
它的作用是在关系型数据库和对象之间做一个映射。
在引入一个ORM后,可以用ORM保存、删除、读取对象,ORM负责生成SQL,开发人员只需要关心对象。
2.3 Hibernate框架
Hibernate是采用ORM机制的持久层开发框架,它是Java应用和关系数据库之
间的桥梁,负责Java对象和关系数据之间的映射。
内部封装了 JDBC访问数据库的操作,向上层应用提供了面向对象的数据库访问API。
Hibernate是轻量级的封装,避免过多复杂的功能,减轻程序员的负担。
同时,它是一个开源代码,提供开放的 API,用户可以自行扩充其功能,使用Hibernate可以减少操作数据库的工
作量。
3 整合Struts和Hibernate的Web应用构建
整合Struts与Hibernate框架[3]是利用Struts的模型部分作为系统的整体基础
架构;利用Hibernate提供持久层支持。
首先根据系统需求分析,建立功能模型,
实现功能模型的Java对象 POJO,然后写出基本的 DAO接口,并给出Hibernate的 DAO实现。
在业务类 BO(Business Object)中,调用采用Hibernate实现的DAO类实现Java类与数据库之问的转换和访问,最后在Struts控制器部分的Action中调用BO完成业务逻辑。
这样就利用了DAO模式
实现Struts与Hibernate的无缝集成[4-5],整合 Struts和 Hibernate的系统框
架如图 2所示。
图2 整合Struts和Hibernate的系统框架
3.1 基于Struts的逻辑控制系统应用
Struts应用最大的特色是将大量逻辑放在配置文件中,而非程序中。
典型的
Struts应用主要有web.xml、strutsconfig.xml和消息资源文件这3个配置文件。
这些配置文件在系统启动时被读入内存,供控制器使用。
作为表示层核心部件的控制器按照Struts配置文件创建和配置各种 Struts组件,并根据文件中的配置决定业务流的转向,实现不同层次的组件相互交互、协调工作。
因此,对struts-config.xml文件进行配置是业务流控制方面的主要工作。
下面是该系统中所使用
的struts-config.xml配置文件的部分片段:通过对传输数据的 FormBean以及从特定请求路径到相应Action类的映射等进行正确配置后,Struts框架中的核心组件 ActionServlet在接收到 Http请求时,会根据配置文件struts-config.xml的
配置信息,把请求转发给适当的 Action对象。
3.2 Hibernate配置
本文可以直接在hibernate.cfg.xml内增加Hibernate配置文件,使用 XML时部分配置代码可以通过第三方的开发插件协作生成,减少开发者的工作量[6]。
在对Hibernate的配置中,主要涉及 XML文档的类型定义、数据库连接的各种参数以及供Hibernate管理事务、产生SQL和管理JDBC连接时涉及的数据映射文件等。
3.3 持久化类定义
Hibernate作用是使普通的Java对象成为持久化类。
持久对象(persistent object)是一个完全符合 Java Bean规范的纯Java对象,它包含符合统一标准的属性和方法,其属性只可以通过自身的get和set方法访问,这样对外隐藏了内部实现细节,规范了事务处理部分中每个属性所对应的数据库字段的数据操作。
3.4 持久化对象的映射定义
映射文件 Student.hbm.xml包含了对象关系映射所需的元数据。
元数据中包含了持久化类的声明及类中各个属性到数据库表各个字段的映射关系。
其属性可以作为一般值存在,也可以指向其他实体的关联,在关系型数据库中体现为数据表的外键。
持久化对象的映射部分代码如下:
3.5 持久化操作
数据在持久化操作实现时,利用Hibernate的Session从数据库中存取对象记录。
首先从 SessionFactory中获取一个Hibernate的Session工作单元。
然后从SessionFactory类中取得Session的实例,得到全局的SessionFactory,从而可以从中获取session进行对象的操作,数据库插入操作的部分代码如下:
数据库查询操作定义如下:
需要注意的是:Hibernate的每个数据库操作都是在一个事务(transaction)中进行的,这样可以隔离不同的数据库操作,假如程序部署到一个由容器管理事务的环境中,源代码不需要进行更改就可以直接应用。
4 系统运行及关键技术
系统的最终运行界面如图3所示,在系统的开发过程中,结合应用的实际情况,
调整系统开发策略。
具体如下:
(1)将页面数据验证放在客户端的设计过程中,系统没有利用Struts提供的Validate()方法,而是将页面数据验证放在客户端。
其好处在于可将页面数据验证的工作交由客户端完成,减少了用户因访问过量造成严重的CPU竞争,其实现部分代码如下:
(2)ActionForm与ActionBean的多对一关系作为一个大型系统存在很多的页面。
在一般情况下,Http表单和Action Form与 Action是一对一的关系,会造成系
统存在大量的ActionForm和Action。
在进行项目设计时,使多个页面对应一个ActionForm。
以学生的录入和修改修改过程为例,共用了一个ActionForm,部
分代码如下:
(3)将相关业务方法组织到一个Action中,多个动作可使用同一个Action,通过
调用Action的不同方法,实现相关业务逻辑,有利于系统的维护。
例如,学生信息的登录页面处理、增删改查和导入导出操作都在StudentAction中,实现的部
分代码具体如下:
图3 系统运行界面
5 结束语
本文将Struts和Hibernate框架应用到学生管理系统的设计开发中,给学生工作的开展带来便利,若应用于其他行业业务系统的开发,则也能起到推动作用。
在整合过程中,Hibernate的对象、关系之间的映射工作量很大,两者的配置文件很复杂等,今后将更好地解决这些问题。
参考文献
[1]孙凌燕.基于Struts的Web应用框架设计与研究[J].计算机工程, 2005, 31(8): 57-59.
[2]祝文军.基于Struts框架和Hibernate技术的Web应用的设计与实现[D].大连: 大连理工大学, 2006.
[3]邹俊.整合Struts和Hibernate框架的Web应用开发[J].微计算机信息, 2008, 22(9): 235-236.
[4]张琛.基于 Struts+Spring+Hibernate的整合架构及其在电信业中的应用[J].计算机应用, 2006, 26(12): 265-267.
[5]吴岳, 翁敬农.用 Struts和 Hibernate构筑 Web应用开发策略[J].计算机工程与设计, 2006, 27(7): 1176-1179.
[6]杨涛, 周志波, 凌力.基于Struts和Hibernate的J2EE快速开发框架的设计与实现[J].计算机工程, 2006, 32(10): 83-85.。