admin 管理员组

文章数量: 1086019


2024年3月28日发(作者:json函数python)

维普资讯

第32卷 

第10期 

VoL32 

计算机工程 

2006年5月 

May 2006 

№lo 

Computer Engineering 

软件技术与数据库・ 文章缩号}100 .3428(2006)l —l083一_03 文献标识码:A 中圈分类号:TP312 

基于Struts和Hibernate的J2EE 

快速开发框架的设计与实现 

杨涛,周志波,凌力 

(复H火学通信科学与1:程系,}:海200433) 

摘要:该l立在Struls和Hibernate的基础上,利用Eclipse开发平向的插件标准,介绍了快速Jr发框架的原删J冬I和实现结构,并实现r一 

种可以通过向导自动生成Web应用代码的J2EE快速开发框架。J2EE快速开发框架,易干设计构建。实验结果表明,程序运行lJ』靠,其良 

好的扩展性满足实际应片{的需器。 

关健词:框架;J2EE;MVC;Struts;Hibernate;Eclipse 

J2EE Quick Development Framework Based on Struts&Hibernate 

YANG Tao.ZHOU Zhibo.LING Li 

(Department of Communication Science and Engineering、Fudan University,shanghai 200433) 

[Abstractl Based on Struts and H ibernate and making use of plug—in standard of Eclipse IDE,This paper introduces the basic Structure of the 

framework and J2EE design and implements a J2EE quick developing framework generating Web application code by wizard These applications 

show that the framework has great expansibility The J2EE quick developing framework is easy to be designed and built The experimental results 

show that programes run reliably.Tim great expansibility call meet actual application’S demands. 

[Key wordsl Framework;J2EE;MVC;Struts;Hibernate;Eclipse 

基十J2EE框架的Java应用已经成为企业商业和政府组 

得到大部分基本功能的代码,开发人员再添加自己的商业逻 

辑代码。这不仅提高了开发速度,并且规范和统一了代码。 织电 政务应用的中流砥柱。开发人员越束越多希望住J2EE 

上有类似C/S领域的MFC这样的快速开发框架,用户通过 

Wizard自动牛成大部分基本功能的程序代码,以达到快速开 

发目的。 

(1)Jakarta Struts构架 

Jakarta Struts足由apache JF发,实现了Model—View 

Controller设计模式的慨念 Struts构件与MCV没计模式对 

应关系如下: 

1.1设计思想 

轻量级构架:一个莆最级、完挚复杂的framework,其 

繁琐的规范和代码复杂度往往加重r程序员学习和编程的负 

担。同时,莆量级架构容易导致过度设计,并且造成代码调 

试和测试困难,很难定位代码错误。 

强调易用性:framework的易用性才能保证它的实用性, 

如果一个用户需要很长时间才能用framework写出第一段 

1)Jsp页面对应View,Struts的Html标志库使Jsp成为 

个基本纯净的View层; 

2)ActionServlet对应Controller,根据Struts—config.xml 

“Hello World”程序,很难提起学习的兴趣。 

封闭的对象调用:封闭的对象调用指framework严格规 

定r每一层调用的方法,作为规范不得被用户所改变。用户 

的配置文件进行控制转发; 

3)ActionForm类把Jsp页面的form域自动封装成为一个 

ActionForm对象,避免_r繁琐的getParameter和set操作; 

4)Action类对应Model层,Action类执行商务逻辑,执 

行各种操作,然后返同ActionForward类,让控制器转发。 

(2)Hibernate 

继承framework类库中的基类,通过面向对象语言的override 

机制扩展自 的商业逻辑及其它代码。封闭的对象调用确保 

了用户按照framework的规范进行编码。 

町扩展API及标准化:一个优秀的framework是需要大 

最优秀的程序员加以扩展完善的。framework不仅只能产生 

Hibernate足一个开放源代码的O/R Mapping(对象l戈系映 

些通用的功能代码,还能有一砦模板标准。针对行业以及 

射)和轻量级的持久层中间件,它通过runtime reflection提供 

了一种对象和数据库的关系表的映射机制。Hibernate的对象 

映射机制减少了数据库编程代码,它读写操作都是Java对象。 

各个常用的功能模块产生代码。如OA模板可以产生一套功 

能复杂通用的OA应用代码,开发者可以按照标准化的API 

接l_1,修改自动生成代码。 

Hibernate会在代码第一次调用Hibernate连接时,根据映射 

文件,生成对象表映射。 

1.2框架设计 

J2EE快速1)f发框架由3部分组成:快速开发Frame类库, 

代码模板席和开发向导,见 1 快速JF发Frame类库提供 

作者倚介:杨涛(198l-),男,硕上生,主研方向:J2EE快速开 

,副教授 

1 J2EE快速开发框架设计 

在J2EE的实际开发中,有一些基本的功能在多数模块 

中都需要使用的,如一张表的增删改查、分页报表,权限控 

制等。如果有一个framework帮助开发人员只需要使用向导, 

发框架;周志波,硕士生;凌 

收藕日期:2005・06r29 E・mail:02202 1 1 1 2@fudan.edu.cn 

83— 

维普资讯

基类和公共类;代码模板库提供生成代码的模板,用于自动 

在快速”发框架应用环境卜,通过向导选择应用模块类 

生成开发代码;开发向导给用户提供一个良好的用户界面。 型,如基本的增删改查、查询报表等。向导根据所选择的应 

用类型,从代码模板席 装载相应的代码模板。输入数据库 

连接参数,向导根据参数连接数据库,取出表信息,或者创 

建表,开发者选择耍实现功能的表。向导根据所选表信息自 

动生成Hibernate配置文件及对象的Java文件,复制到相应 

包目录下。 

最后,向导将根据用户输入包和类定义名称,自动生成 

田I J2EE快速开发框架 

代码,修改Struts配置文件。进行编译部署,即可获得一个 

1-2.1基础框架 

有基本功能的Web 用。 

框架模式设计基于MVC实现的Struts和在持久层实现 

1.3快速开发框架类库分层结构 

OIR Mapping的Hibernate,在Eclipse的IDE卜实现快速开 

Framework类库存目前较为成熟的Struts和Hibernate的 

发框架。 

基础上实现,按视图层、控制层、商务逻辑层及持久层实现 

1.2.2 Eclipse插件部署 

代码,见罔3。 

Eclipse有很好插件标准,通过xml把J2EE 

快速开发框架的向导嵌入到Eclipse的菜单和工 

一 

具栏中调用,部署文件plugin.xml如下: 

【.一 .

!【—————— ..... ......——J 

<?xml version=”1.0”encoding=”UTF 8”?> 

. 

<'?eclipse version=”3.0“? 

[]圃 

仁二=_]一 

<plugin 

坚 

Database 

id=”org.fudan comlab.frame’’q,tP 

name=”QJFrame Wizard Plug in’‘ VlEw 

M(xtel l fJcf',islencc 

version=”1.0 0” 

圈3 J2EE快遗开发框架樊库分层结构 

provider—name=’’comlab“ 

1.3.I视图层 

class=”org.fudan.comlab.frame.QJFrameWizardPlugi

葛圃

n’‘> 

 

{见图层主要由Struts的Tiles和Jsp页面组成,Tiles可以 

<runtime> 

设定视图层的布局。在视罔层的二}三要工作有2个:一是建立 

<library name=”framewizard.jar“> 

些基础的Tiles布局;二是生成一些经常要调用的Jsp文件, 

<export name=” ”/> 

如分页的Jsp视图,一些常量的定义代码等。 

</library> 

视图层定义/-BaseActionForm,继承了Struts的 

</runtime> 

</plugin> 

ActionForm类,BaseActionForm包含一些必需常量和变量, 

1.2.3代码模板库 

如每页默认记录数,页面提交类型等。 

代码模板库包含了从视图层到持久层各层代码生成模 

1 3.2控制层 

板,还包括Hibernate数据库连接配置和对Struts定义的 

在Struts中,所有控制转发都由ActionServlet来完成, 

web.xml、struts—config.xml和struts—tiles.xml等模板文件。 

MainServlet类继承3ActionServlet,并且替代ActlonServlet 

代码模板库有3种类型模板文件:(1)固定代码文件, 

控制转发。MainServlet封装了权限控制方法,它支持ACL 

如include的Jsp文件;(2)动态的Java代码,包名,类名; 

(Access Control List)、Roles两种权限控制亢法,同时允许 

(3)动态的Hibernate、Struts配置文件和Web.xml部署文件 

用户自己定义其它权限控制方法。 

1.2.4开发向导 

1.3.3商务逻辑层 

开发人员需要使用向导生成一个快速开发框架应用环 

商务逻辑层定义了BaseAction和BaseModel类。其中, 

境,应用环境包括Web应用目录和用户基本环境代码。向导 

BaseAction继承了StrutS的Action类。在BaseAction和 

把必需的库文件,如Hibernate.jar、Struts.jar以及快速开发 

BaseModel类中,封装r一些常用的商务方法,如数据操作 

Frame类库复制到Web应用目录WEB—INF/lib下。向导还会 

的增删改查方法,调用储存过程等 

生成用户基本环境代码,这些代码类继承Frame库中类,以 

尽管原则上减少重量级构架没计,但考虑到用户需求, 

My为前缀名,见图2。 

商务逻辑层可能包含EJB调用。冈此,BaseModel中还需要 

封装findEJB方法以及实现Serializable接口。 

1.3.4数据持久层 

数据持久层定义了H_hemateDAOsupporI和SupportDAO 

类,前者封装了Hibernate的数据操作方法,后者使用 

Hibernate的连接和事务管理机制,实现一 Hibernate目前 

支持不佳的JDBC操作,如批 修改和删除,存储过程的调 

用等。 

2快速开发框架实现 

快速开发框架实现主要包括2个部分:(1)快速开发框 

圈2开发向导业务潍 

架类库QJFrame的实现;(2)向导生成的用户代码实现。 

84一 

维普资讯

2.1快速开发框架类库包结构 

快速开发框架类库目前主要由5个包构成,分别是 

authorize、base、dao、exception、util,打包成QJFrame.jar。 

2.1.1 authorize包 

足编译Java文件所存放目录,还存放了hibernate的配置文件 

hibernate.cfg.xml和对象关系映射文件目录cfg。 

Js目录存放了javascript脚本文件,skin目录存放l『CSS 

和图像文件,include存放了Jsp脚本文件,如用于分页的 

turnpage.Jsp 

authorize包有Acl、Role和MainServleta 3个类,用于 

实现控制层的权限控制。向导生成一个 

MyMainServlet类,该类继承了MainServlet, 

用户可以在MyMainServlet加入自已权限控 

制的代码,默认情况下直接调用父类的实现。 

向导在生成的web。xml加入以下捕述: 

<servlet-name>action</servlet.nalne> 

<servlet-class>com.fudan.comlab example.auth 

orize.MyMainServlet</sel vlet.class> 

org fudan clmdab ftmlle ot,g fudan ctlmlab example 

e(Web Applicalion Ml ̄tllue 

exampl

 

L— !i I 

Acl 

Role

MainServlet

. 十 

... 一 

【 

一. 十i+

兰!} 

MyAd 

MyRole 

MyMainSetMel 

 塑:1 

_lib 

l 

l 

Hibemalc

1|1l 

[ ] 

。 

一一 +

[ 丑

 

OJFI“【】1c laI 

BaseActioiI MyBaseAction 

B*LseActionForm

BaseMt l 

--一 一 + MvBa cAc【lOnI m] 

+ MyBascModel 

匹 ] 

hI male c1)xml 

xlruls—ctmli ̄Killl 

2.1.2 base包和dao包 

[ 

。dao 包由 

] 

... +

[ ] 

~ MyStorePi∞ 

Hit ̄mat'eDAOSuppon 

StoreProc

Suppt ̄rtDAO 

base包有BaseFormAction、BaseAction、 

BaseModel 3 个类

[ 

AppExceptkm

DBException 

。。’。 

一。 

FJBFinderException 

FJBlnvokeException 

WebExccption 

[ 

-I.U ̄erIⅪnneApPEx∞P【l【1n 

UserDefiucDBExceplion 

H_hernateDA0supp()rt 、 StoreProc 和 

SupportDAO构成,StoreProc足用于定义映射 

储存过程的类。 

2.1.3 exception包 

exception包定义了AppException、 

DBException 、 EJBFinderExceD“on 、 

[二口

+MyWehExceptionHandlel 

 

是 extends 

一 

W曲ExccDt10nHⅡn山er一 一

[ ] [ ] 

[ 

Iumpagc J 【) 

詹 m ln 

EJBInv()keExce p【jon和WebException 5类异常。其中 

AppException继承Exception类,Action和Model类的代码 

异常封装成AppException抛}}1;DBException、 

EJBFinderException和EJBInv0keException类分别是持层久、 

EJB查找和EJB调用异常,它们都继承了AppException,EJB 

或者DAO类由Model调用,继乐AppException可以让Model 

层直接作为AppException向上抛出 WebException是视图层 

抛出的异常,所有Jsp均抛出WebException异常。 

分层异常的定义,使层问调用简单,但异常开销较大, 

可能频繁发生的状态,不宜使用异常。exception包还定义了 

WebExceptionHandler类,用于异常发生进行处理并且转发到 

圈4快遗开发框架应用环境代码结构 

2.2.2快速开发框架模块生成代码结构 

生成应用环境后,在应用环境下选择向导的new module 

application,生成模块代码。模块代码包括3个部分:Jsp; 

Hibernate和Struts配置文件;Action、ActionForm、Model 

和DAO类的Java代码,见图5。 

l org fudan.comlab example  elxample(Web Application Modlue1 

l 塑!I L.  【l_ 堡堡: j  !!l I 

Mj Ltase,tlctlm ̄ 一一4 FooAction 亘西垂盈 

相应的error页面。 

2。1.4 util包 

茎 

MyPHlaseAMt州e:tiont Fonn一-_一-I.F.Fo( ̄oAMcotidoen /Forz t l clg ..“… 

[ ]  一 cI .. ! 业 

IlibernateSupportDAO—-—--I'FooDAO L sl T LlI s.c:ot ̄fig xⅡ 

I Jf .defs xml 

t——————一 

图5 Foo模块代码结构 

图5足住“基本增删改查”应用模块向导下,选择foo 

util包定义了大量J2EE井发常片{的应用类,如用于中文 

编码转换处理EncodingFilter;日志类LogUtil;日期格式转 

换处理类DateUtil;数字转换处理类NumberUtil;认证代码 

图片生成类GenCertifyImage等。 

袁,自动生成的Foo模块代码结构。向导在Web目录下创建 

foo目录,生成foo.Jsp和fooindex.Jsp文件,foo.Jsp足增加 

和修改视图,fooindex是列表视罔 存WEB-INF/classes/cfg 

FI录下创建FooMode1.hbm.xml映射文件,同时修改 

hibernate.cfg xml,加入FooMode1.hbm.xml映射文件,并且 

2.2生成代码结构 

开发者通过两个步骤生成应用代码,首先通过向导生成 

将FooAction、FooActionForm及相关Jsp文件的struts定义 

添加到struts.config.xml和tiles—defs.xml。 

个快速开发框架应用环境,然后在这个应用环境下生成具 

体模块的代码 

2.2.1快速扦发框架应用环境代码结构 

快速开发框架应用环境的文件结构包括2个部分:Java 

包源文件和Web应用模块文件,见图4。 

3结束语 

J2EE开发的很多模块和应用都有共同的部分,这些有共 

性的工作却占用了开发者大量时间。在实际的J2EE开发应用 

中,J2EE快速开发框架可以减少1/3的代码开发量,同时使 

个快速开发框架应用环境,是和QJFrame库拥有同样 

代码变得规范。 

J2EE快速开发框架还需要进一步完善,需要更多的应用 

功能模块类型加入到框架中,并且还需要进一步制定接El、 

文档及API标准规范。 

包结构的Java工程代码文件。除了MyStoreProc,所有以My 

开头的类均继承了QJFrame库中』:}j应的类,开发者在这些类 

中可以override快速开发框架庳中的类,或添加修改代码。 

MyStoreProc引用StorcProc类,定义静态对象映射储存过程。 

Web应用模块文件目录主要包括WEB—INF、js、skin和 

参考文献 

1 Berry C A.J2EE Design Patterns Applied/M].Massachusetts: 

Wrox Press.2002 

include目录。向导根据用户选择的WEB应用服务器类型, 

把必须的库文件拷入到WEB—INF\lib目录下,同时生成相应 

的web.xml、struts—config.xml等义件。WEB—INF/classes目录 

2 Kurniawan B.Develop Faster with Tag LibrarieslC].Java Proc of 

Website,2O03 

85一 


本文标签: 代码 开发 框架 向导 生成