英语原文共 5 页,剩余内容已隐藏,支付完成后下载完整资料
2009年资讯工程问题世界大会
基于Struts和Hibernate的结构集成研究
Juanjuan Yan,Bo Chen,Xiu-e Gao,Le Wang
Information Engineering College,Dalian University,Dalian Liaoning, China
摘要:基于MVC的Struts框架迄今为止给整个系统带来了最好的代码重用和清晰的代码结构,但由于模型部分采用JDBC直接连接数据库,因此存在程序复杂、层间耦合度高、维护困难等问题。Hibernate的ORM特性使得实现数据库的移植和操作变得简单易行。由于这些特点,整个系统的开发和维护变得更加容易。本文提出了Struts和Hibernate的集成,并给出了一个简单的系统来说明集成的优势。
1 介绍
随着网络技术的飞速发展,分布式企业网络应用技术日益成熟。随着Java技术的广泛应用,Java 2平台企业版(J2EE)[1]的网络应用系统因其分层性和平台独立性逐渐被绝大多数公司所接受。J2EE已被证明是一个值得信赖的软件开发企业技术,并得到许多重要的信息产业公司的支持。但是J2EE也有一些缺点,比如企业级的爪哇豆(EJB)价格高、周期长、实现复杂。
现在,Struts已经成为基于Java语言的最流行的框架,因为它为网络应用程序带来了出色的层划分。目前,一些大型企业在J2EE嵌入了Struts的装配开发工具。但是在Struts的模型部分,系统与数据库交互的实现并不理想。Hibernate提供了从Java类到数据表的映射机制、数据查询和恢复机制等,实现了数据层的对象持久性。Hibernate消除了直接在系统中操作关系数据库的缺点。因此,采用基于Struts和Hibernate的多层集成框架可以使这两个优点都可以充分发挥,很好地解决了传统J2EE的一些缺点。
2 基于MVC的Struts框架
在传统的网络应用程序中,Java服务器页面页面负责处理所有事情,例如,接收请求、执行业务逻辑、选择下一页。这些复杂的事情可能导致JSP页面代码的混乱,并对页面的扩展和维护有害。模型-视图-控制器(MVC)[1]模式将编程代码分成三个不同的区域,解决了上述问题。MVC可以实现J2EE应用系统的分层和三层或多层的松散耦合,是一种面向动态内容的实现方式。MVC模式将应用程序分为模型、视图和控制器三个核心组件。
Struts是MVC的一种实现。它是一个开源的网络应用程序框架,使用属于J2EE规范的Servlet和JSP标记作为实现的一部分。Struts继承了MVC的特点,并根据J2EE的特点实现了相应的变化和扩展。Struts通过Java Bean和Action类将JSP的Java代码分离为MVC模式,在模型、视图和控制器三个分区之间传输数据,最后通过配置文件演示各种类和JSP页面之间的连接,旨在实现表示层、业务层和数据层的分离。支柱结构如图1所示。
该模型包含与持久层交换数据的业务逻辑。视图负责生成用户直接可见的内容,例如网页。控制器是从客户端接收请求、确定发生什么业务逻辑以及下一步去哪里的层。在Struts框架中,模型将Java类用于业务逻辑。该视图可以用JSP和Struts的Taglib指令实现。控制器是一个被称为Servlet的J2EE组件,更具体地说,是一个ActionServlet对象,它决定了逻辑执行的内容或时间,以及控制应该指向哪里。
图1 Struts流程图
3 基于ORM的Hibernate框架
对Java数据库连接(JDBC)来说,同时使用面向对象软件和关系数据库是一项复杂的任务,因为数据在对象和关系数据库中的表示方式不匹配。因此在JDBC,开发人员必须编写纯粹的结构化查询语言语句来将对象模型的数据表示映射到关系数据模型及其相应的数据库模式。
3.1 Hibernate的介绍
Hibernate是一个灵活而强大的对象关系映射(ORM)[2]解决方案,用于将Java类映射到数据库表。这是一个强大、高性能的对象关系持久性和查询服务。Hibernate允许开发人员用自己的可移植的SQL扩展(Hibernate Query Language (HQL))[3)以及本机SQL来表达查询,或者用面向对象的标准和示例应用程序编程接口(API)来表达查询。Hibernate本身使用XML文件来处理这个映射,所以开发人员不需要为此编写代码。
Hibernate是一个开源软件,可以自由地用于开发和生产部署,它是Java应用程序和关系数据库之间的桥梁,负责Java对象和关系数据之间的映射。Hibernate内部封装了JDBC访问数据库的操作,为上层应用程序提供了面向对象的数据库访问接口。因此开发人员可以使用对象编程思想来充分操作数据库,不必要地关心底层数据库结构。
与使用SQL和JDBC API[4]进行手动编码相比,Hibernate将开发人员从95%的常见数据持久性相关编程任务中解放出来。它可以集成各种网络服务器、应用服务器,几乎支持所有流行的数据库服务器。
图2 Hibernate原理图
Hibernate位于应用程序和数据库之间的中间层。在提供的持久服务中,Hibernate通过类本身的属性和映射文件(mapping.xml)将类映射到数据表的行。应用程序通过对象与数据库交互,直接处理数据。
4 Struts和Hibernate的集成
在开源框架中,对于演示部分,Tapestry[2]具有强大而自然的页面组合,它的文档太概念化,不利于编程。它的学习曲线太陡等等。在逻辑方面,Spring具有良好的集成功能,但缺少公共控制器。而EJB·[2]依赖于EJB的集装箱,同时,它是复杂地实现的。而支柱因其优势而得到广泛应用。
目前,大多数系统主要应用关系数据库,而Java本质上是一种面向对象的语言。在Struts框架应用程序的模型部分,在存储和获取对象时使用SQL和JDBC操作数据库降低了编程效率和系统的可维护性。传统的基于J2EE的应用程序采用基于EJB的重量级框架,以适应大型企业的发展,而EJB集装箱的开发和调试需要耗费大量的时间和高昂的价格。EJB3改善了原EJB的缺点,但其应用还不成熟。
Hibernate可以替代容器管理持久性,在应用EJB·[3]的J2EE框架中实现持久性的重大责任。总之,冬眠可以解决技术开发中使用传统化学机械抛光、JDBC和数据库访问对象(DAO)[5]带来的困难。为了减少代码耦合,提高系统开发效率,本文建议J2EE基于Struts和Hibernate的应用开发策略。
Struts设计充分展示了MVC框架,所有的控制流都需要一个配置文件(Struts-config.xml)来管理,并且便于维护。Struts和Hibernate的集成是Hibernate解决了Struts的模型层,这使得开发人员可以操作Java对象而不是数据库。该集成充分体现了面向对象的思想,很好地解决了传统J2EE数据库操作中的一些问题。
4.1 框架流程
基于Struts和Hibernate的集成框架流程如图3[6所示。首先,用户通过浏览器发送Http请求,然后Http请求被业务层控制组件的动作服务程序接受,然后被提供给请求处理器,该处理器通过请求URL[3]从动作映射获得相应的动作。此外,动作表单(ActionForm)打包JSP页面,如果需要,可以对数据表的数据进行检查,如果有错误,将动作错误发送回可视页面,如果通过验证,将页面的数据传输到动作。
请求处理器传输“执行”操作方法,该方法传输业务逻辑模块。Hibernate实现数据库和JavaBean的交互。处理业务逻辑的操作通过数据永久层和字段对象层与数据库交互。动作的“执行”方法将返回动作服务程序在执行后接受的动作转发对象。
图3 基于Struts和Hibernate的集成框架流程图
因此,ActionServlet被传输到指定的ActionForward资源,这意味着选择的正确视图被显示给用户。
4.2 整合框架的系统结构
多层J2EE系统结构的环境影响报告书层可分为数据永久性层[7]和数据资源层。这意味着一个系统可以整体分为五层:
客户端层:该层运行在用户机器的浏览器中,处理与用户的交互,向用户发送和显示消息。J2EE平台支持不同类型的用户,包括超文本标记语言用户、Java小程序、Java应用程序等。
表示层:该层在J2EE网络容器中工作,产生系统的表示逻辑,处理用户的请求并做出响应。整个网站建立在Struts框架之上,其中视图组件由数据由动作表单Bean(Actionformbean)表示的JSP/HTML页面组成,控制器组件由ActionServlet United Struts-config . XML和动作类组成,模型组件由业务逻辑层实现。
业务逻辑层:该层完成系统所需的业务,为表示层提供所需的业务方法。它可以从客户端程序接收数据,经过适当处理后保存到存储设备中,从数据存储设备中读取数据,然后发送给客户端程序。该层由业务对象(BO)组成,如JavaBean和会话EJB。
数据永久层:该层由Hibernate组成,Hibernate从数据源获取数据,然后生成采购订单,并将其传递给业务逻辑层。在休眠状态下,值对象充当采购订单。
数据源层:该层的另一个名称是数据库层,它存储系统应用程序数据。
整个系统框架可以用JSP-BO-DAO/VO(休眠)-数据库[8]来表示。系统框架的最大特点是组合
在Struts的表示层和Hibernate的数据持久性层之间。它采用多层体系结构来限制相应层内应用数据的表达,减少了层与层之间的数据耦合,提高了整体框架的可维护性和可扩展性。
5 情况
登录系统的实现展示了Struts和Hibernate框架下网络应用程序的开发流程。系统完成用户名和密码等相关信息的输入和检查。如果用户名输入存在于数据库中并且密码正确,用户可以成功登录。反之,用户会得到一个沮丧的结果。
5.1支柱框架的应用
Struts框架实现了模型-视图-控制器设计模式的可视化组件。
(1)Jsp对应视图组件,Struts的HTML Taglib指令使Jsp成为一个纯视图层,登录页面的部分代码如下:lt; HTML:form action =/log in ' method = ' post ' gt;用户名:lt; html:text property = ' username '/gt; lt; html:errors property = ' username '/gt; lt; br/gt;密码:lt; html:password property = ' password '/gt; lt; html:errors property = ' password '/gt; lt; br/gt;lt; html:submit/gt;lt;html:cancel/gt;
(2)动作Servlet对应于控制器,通过Struts-config.xml的配置文件进行传输和控制,其部分代码如下:lt;动作属性= ' LogInform ' input = '/log in . JSP ' name = ' LogInform ' path = '/log in ' scope = ' request 'type = ' com . your company . struts . action . logInaction ' gt; lt; forward name = ' failed ' path = '/failed . JSP '/gt; lt; forward name = ' success ' path = '/success . JSP '/gt; lt;/action gt;
ActionServlet根据配置文件接收到用户的登录请求(login.jsp)后,属于ActionForm类的LoginForm检查数据库中是否存在用户名输入。登录信息获取的消息已经过期。登录处理检查消息的操作事务。
(3)动作表单将表单域打包成动作表单对象,避免了获取和设置的操作。行动表单负责收集信息。Struts-config.xml中的操作表单语句如下:lt;表单beans gt;lt; form-bean name='loginForm 'type = ' com . your company . struts . form . loginFOrm '/gt; lt;/form-beans gt;
5.2休眠框架的应用
系统在第一次调用休眠连接时创建休眠映射。同时,映射文件和表对象被自动生成。用户类是一个代表数据库用户表的POJO(普通旧Java对象)。配置映射文件的用户映射到关系数据库的属性。关系数据库中的每一行数据都是一个VO,其中的每一个字段都是一个属性值。Hibernate映射文件解释了持久类和关系数据库表的映射关系,包括持久类的关系。
- 用户. hbm. xml的部分代码如下:
lt;休眠映射gt;lt; class name = ' org . jj Yan . VO . user ' table = ' user ' catalog = ' database ' gt;lt; id n
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[19992],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、文献综述、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。