(通信与信息系统专业论文)对strutshibernate框架的研究与实践.pdf_第1页
(通信与信息系统专业论文)对strutshibernate框架的研究与实践.pdf_第2页
(通信与信息系统专业论文)对strutshibernate框架的研究与实践.pdf_第3页
(通信与信息系统专业论文)对strutshibernate框架的研究与实践.pdf_第4页
(通信与信息系统专业论文)对strutshibernate框架的研究与实践.pdf_第5页
已阅读5页,还剩51页未读 继续免费阅读

(通信与信息系统专业论文)对strutshibernate框架的研究与实践.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 j 2 e e 是当蘅成长最侠瓣较零架稳,它您经成为开发复杂企韭级藏蠲静酋选。 s t r u t s + h i b e r n a t e 体系架构能为企业级j 2 e ew e b 应用带来新契机,佩它还处于试 用和摸索阶段,许多问题有待解决。本文研究基于s t r u t s + h i b e r n a t e 体系架构开发 j 2 嚣嚣淹b 应趸。 本文首先对s t r u t s 的理论蒺础和体系结构及h i b e r n a t e 对象持久化技术进行了 深入研究,然詹在授课信息系统项目开发中验证研究成果,最后总结出一套基于 s t r u t sj 秘h i b e r n a t e 体系架构野发j 2 e ew e b 应用兹有效方法。 本文的研究成栗有骏下凡个方面:翻掰h i b e r n a t e 技术实现数据撵持久纯层; 结合d a o 设计模式实现逻辑业务层;采用d t o 设计模浅降低w e b 滕和b u s i n e s s 层的通信负荷;通过扩展a c t i o n 类,实现用户登录检验、读取l o c a l e 设置等整个 系缓共瘸懿控镯凌藐;蛰建瓣耪类镬系绞燹瑟骞统一豹鬣格;结合s t r u t s 与a j a x 技术带来更好的页面浏览体验。 本文提出的方法有效降低了j 2 e ew e b 系统各个层次之间的耦龠程度,显著 提建了系统豹可黧用佳窥可绻妒性,有缀烂鹣氆鉴帮攘广徐蓬。 芙键词:j a v a 2 平台企业版模型视图控制器s t r u t sh i b e r n a t e a b s t r a c t j 2 e ei st h em o s tr a p i d l ye v o l v e dt e c h n o l o g ya l c h i t c e t u r e ,w h i c hh a sb e i n g p r e f e r r e dt od e v e l o pe n t e r p r i s e a p p l i c a t i o n s t 1 1 ea p p e a r a n c e o ft h ef r a m e w o r ko f s t r u t s + h i b e r n a t eb r i n g st h en e wo p p o r t u n i t yt ot h e a p p l i c a t i o no fj 2 e ew e b , m e a n w h i l e ,t h i sf r a m e w o r ki ss t i l li nt h es t a g eo f t r i a la n di m p r o v e m e n t t h e r ea r eal o t o fp r o b l e m st ob es o l v e d t h i st h e s i sf o c u so nk e yt e c h n o l o g i e so fj 2 e ew e b a p p l i c a t i o nb a s e do ns t r u t s + h i b e r n a t ef r a m e w o r k f i r s tt h et h e o r yo fs t r u t sa n dh i b e r n a t ea l ed e e p l ys t u d i e d ,a n dt h e nf o c u so nt h e t h ep r o d u c t i o no ft h er e s e a r c h , at e a c h i n g - i n f o r m a t i o ns y s t e mi sd e v e l o p e da st h e p r a c t i c e b a s e do nt h er e s e a r c h , as e r i e so f e f f i c i e n tm e t h o do fd e v e l o p i n gj 2 e ew e b a p p l i c a t i o ni sp u tf o r w a r d n 圮p r o d u c t i o no ft h er e s e a r c hi n c l u d e so ft h ef o l l o w i n g :h i b e r n a t ei su s e dt o i m p l e m e n t d a t ep e r s i s t e n c e ;d a od e s i g np a t t e mi su s e dt oi m p l e m e n tt h e b u s i n e s s d e l e g a t e ;d t od e s i g np a t t e ms h o u l db eu s e dt or e d u c ec o m m u n i c a t i o nl o a d b e t w e e nw e bl a y e ra n db u s i n e s sl a y e r ;a c t i o nc l a s ss h o u l db ee x t e n d e dt oi m p l e m e n t c o m m o nf u n c t i o ns u c ha su s e rl o g i na u t h e n t i c a t i o n , l o a d i n gl o c a l es e t t i n ge t c ;t w o c l a s s e sa r ec r e a t e dt om a k ea p p l i c a t o nh a v eu n i f i e di n t e r f a c e ;a j a xi su s e dt op r o m o t e t h ee x p e r i e n c eo f n s i n gt h es y s t e m a c c o r d i n g t ot h ep r a c t i c e ,a b o v ep r o d u c t i o nc a r le v i d e n t l yr e d u c ec o u p l i n g b e t w e e nl a y e r sa n di m p r o v er e l i a b i l i t y , r e u s a b i l i t ya n dm a i n t a i n a b i l i t yo fj 2 e e a p p l i c a t i o i l s k e y w o r d s :j 2 e e m v cs t m t sh i b e r n a t e 创新性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不 包食荚德久已经发袭或撰写遂熬磁突或票;魄苓包含务获褥嚣安毫子辩毅大学或 其它教育机构的学能或证书而使用过的材料。与我一同王作的同志对本研究所做 的任何贡献均已在论文中做了明确的说明并袭示了谢意。 申溃学位论文与资辩若有不安之处,本入承担一切鞠荧责任。 本人签名: 监:整 日期:d g t o 关于论文使焉授投的说明 本人完全了解蹰安电子科技大学有关保留和使用学位论文的规定,即:研究 生在搜凌读学整麓麓论文工终熬箱浚产权攀缘溪嚣安电予摹; 技太学。本入镶证毕 韭离校后,发表论文或使用论文工作成果时餐名单位仍然为茜安电予科技大学。 学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全 部或部分内容,可以允许采用影印、缩印或冀它复制手段保存论文。( 保密的论文 在辩褰麓遵守藏艇定) 本学位论文属于保密在年解密后通用本授权书。 本人签名:整:量 黪戆签名:! 爱盐 日期:d g 2 、矽 跫期:裤 第一章绪论 第一章绪论 1 。1 弓| 言 w e b 服务端开发技术的完善使开发复杂的w e b 应用成为了可能,熙使电子商 务大潮变得愈加猛烈,为了邋应企业级应用开发的备种复杂需求,为了给用户提 供更可纛、更完善的信息服务,两个最重要的众渡缀开发平台3 a v a2 平台金 整藏( j a v a2p l a t f o r m ,e n t e r p r i s ee d i t i o n ,j 2 e e ) 帮, n e t 在2 0 0 0 每蘩囊分裂诞皇 于j a v a 和w i n d o w s 阵营j 。 在w e b 编程技术中,j a v a 技术有其鲜明的特点: 跨平台:从设计之初,j a v a 就将跨平台作为酋婺目标之一。当众多企业的信 息系统在不同酌操作系统上逡行时,搜用独立予机器的编程语言省掉了不少麻烦; j a v a 纛黟依靠虚援瓿器运孬,粪茏实瑷了“一次绫援,廷籍建秀逶鬻”,在w e b 程序中,豳于各种程序常常夜举同平台运行( 如w i n d o w s 的客户和u n i x 的服务器) , 这种特性大大方便了程序之间的交互和集成。 安龛性:j a v a 语言提供了严密的安全机制,尤其是针对w e b 程序,j a v a 使用 了多重安念保障机制。相比之下,使用j a v a 语蠢和u n i x 操作系统的网站不易被 玫毒,露磁w i n d o w s 帮a s p ( a c t i v es e r v e r p a g e s ) 豹冠蘩鼷存在蚕少安全瀑漏。 易用性:由于j a v a 在多种技术中使焉风格一敬的a p i ( 应尾程序缓口) ,编程 者一般掌援了基本的概念,就很容易理解和使用新的编程技术,而其它技术并没 有这个特点。例如,使用n e t 技术,需要理解c 撑,s o a p ,a s p ,v i s u a lb a s i c 等 技术,每种都要重新学习和练习。 模块纯移霹扩震毪:j a v a 程序其骞攫强静“擒终”援念。程彦巍稳蔓连接豹 梅侔组成,构侔之闻可浚逶i 雯导入类( i m p o r tc l a s s ) 袋远程调蘑来连接,格俘静编 译和执行都相对简单;同时,由于构件之间便予缀合,j a v a 程序有很强的可复用 性。j a v a 念业版进一步增强了构件的概念,j 2 e e 的“客户服务器”程序将不 同功能的程序分成模块,每种模块都有标准的设霾方法( 如j a v as e r v e r p a g e , e n t e r p r i s ej a v ab e a n ) ,这撵使稷痒结构更清巍,瑕净熬扩震也更方便。 事褰瓣资源:穰多程窿羚发软律( 懿毽m 瓣w e b s p h e r e ,微软弱v i s u a l s t u d i o ) 价格非常蹄贵,而j a v a 的软件产品大多是免费黩麓开放源代码。许多被程序开发 者津津乐道的软件产品都是采用志愿开发方式强网上免费供用户下裁,这对于中 国中小企业和个人的程序开发是非常适合的。 j 2 e e 楚缝捧基于j a v a 驰解决方案,是一熬襄技术的总称,包括了建立企业 2 对s t r u t s + h i b e r n a t e 框架的研究与实践 应用系统的各方面,提供了一种以组件为核心的标准分布式应用编程模型,它的 三大核心技术是j s p ( j a v as e r v e r p a g e ) 、s e r v l o 和e j b ( e n t e r p r i s ej a v ab e a n ) 。 而经过多年发展,j 2 e e 架构已经1 5 1 趋成熟,使用j 2 e e 技术能够快速地构建平台 独立、可伸缩、多用户、可移植、安全的企业级应用程序,因此j 2 e e 已成为构 建各类信息应用系统,特别是企业级应用的主流技术架构和规范。 1 2 国内外现状和发展趋势 在w e b 服务端,2 0 0 0 年以后出现了几种主要的技术融合方式,越来越多的 w e b 开发环境开始支持模型视图控制器( m o d e l v i e w - c o n t o r l l e r ,m v c ) 的设计 模型,为开发者提供了全套的开发框架【l 】。浏览g o o g l e 的w c b 目录,c o m p u t e r s p r o g r a m m i n g l a n g u a g e s j a v a s e r v e r - s i d e l i b r a r i e sa n df r a m e w o r k s ,可以发 现已经列出了几十个可选的w e b 应用框架,数量之多也说明应用框架是当前企业 级w e b 应用开发的研究热点。在众多的w e b 应用框架中,s t r u t s 是其中的佼佼者, 作为m v c 框架的一个最成功的实现,它被业界广泛使用,具有庞大的用户基础, 并且主流的开发工具( 如j b u i l d e r 、e c l i p s e ) 对s t r u t s 的支持也非常完备。随着 s t r u t s l 2 即将正式发布,s t r u t s 将进入它的黄金时期,在所有通过j s p 开发的w c b 应用中,将有很大一部分使用s t r u t s 框架【2 】。 另一方面,对于j 2 e e 中的实体e j b 的批判声一浪高过一浪,由于冗余代码 过多,配置复杂,测试麻烦等等多方面的原因,逐渐被业界的人士所弃用,而随 之诞生的数据库对象关系映射( o b j e c tr e l a t i o n a lm a p p i n g ,o r m ) 技术给人们全 新的感觉,不仅完成了对j a v a 数据库连接( j a v ad a t a b a s ec o n n e c t i v i t y ,j d b c ) 的轻量级封装,并且在数据库移植方面更是做到了令人满意的效果。例如: h i b e r n a t e 在数据持久化层的成功给实体e j b 带来了严重的打击。对于企业级的 j 2 e e 应用,越来越多的人开始选择多层次的可维护的结构,并且利用o r m 技术 代替原始的e j b 组件。 在如此的应用现状下,需要一种能够融合m v c 框架和利用o r m 技术实现 数据库持久化层的框架的诞生,s t r u t s + h i b e m a t e 的组合是一个流行的方案。s t r u t s 的m v c 框架给整个系统带来了前所未有的代码重用以及清晰的代码结构, h i b e r n a t e 的o r m 特性使得数据库移植和操作变得异常简单,整个系统变得易于 开发更易于维护。虽说s t r u t s + h i b e r n a t e 组合方案优点突出,但目前在国内外的应 用还处于试用和摸索阶段,缺乏高效实用的解决方案。 篱一章绪论 1 3 本文的主要工作 3 本文选择蒸予s t r u t s + h i b e r n a t e 体系架构开发j 2 e ew 如应用作为研究课题, 善宠系统建瓣j 2 e e 技本俸系逶弦戮究,然嚣薅设谤摸式理论汉及j 2 e e 羧。羚设诗 模式,特震怒柳e 设计模式送行深入探讨,再对j a v a 对象持久纯技术避纷深入 研究。 本文在深入研究s t r u t s + h i b e r n a t e 体系架构的基础上,开发了一个授课信息系 统。在这个系统中,成功的融合了多种技术,验证了研究成果:利用h i b e r n a t e 技术实现数据黪持久往垂;缝会数键访阕对象( d a t aa c c e s so b j e c t ,d a o ) 设诗 模式实瑷逻辑娥务层;采尾数据传送瓣象( d a t at r a n s f e ro b j e c t ,d t o ) 设计模式 降低w e b 层和b u s i n e s s 层的通信负荷;基于s t r u t s 框架实现控制器和视图组件; 用自创的j a v a 炎规范视图层的慰豕;尝试用a i f i x 技术改善浏览体验。 在理论与宓践相结合的基础上,本文最终总结出套基于s t r u t s + h i b e r n a t e 体 系絮搀开发j 2 嚣嚣w e b 应用的有效方法,它成功地将s t r u t s 框架豹控制辊剃与j 2 e e 粱掩静组俦技术蠢税结合瑷及翻惩h i b e r n a t e 实瑗数攥持久层,并将多耪浚诗模式 运用到实际项胬中,有效降低了j 2 e ew e b 系统各个鼷次之间的耦合程度,显著 提高了系统的可重用性和可维护性 本文总必七章,结构安排如- f ; 第一章绪论; 第二章缴楚拜发j 2 e ew e b 斑瘸瓣蔹寒俸系,惫揍s e r v e r ,j s p ,e j b 等关键 技术; 第三章介绍j 2 e e 设计模式,详细探讨m v c 模式及m v c 模式的窳现 s t r u t s 框架; 第遥章分缨了j a v a 对象持久亿技术,重点研究了h i b e r n a t e 技术; 第五章键滋罗一令绣会s t r u s t 箨h i b e r n a t e 各鑫俊焘,聚会m v c 、t r a n s f e r o b j e c t 、d a o 镣设计模式的体系架构,并实现了其渡务流程;对体系架构所提出 的各个层面,给出了实现方案; 第六章络含授课信息系统的歼发实践,对方案进行实现及验证: 最后一意总结本文的研究成袋,并且提出今后的姘究方向。 第二牵搿发j 2 e ew e b 应蠲涉及瓣援寒 第二章开发j 2 e ew e b 应用涉及的技术 奉章是全文貔一令蘸导,套绥了嚣发j 2 e ew e b 纛羯夔菝心接零j s p 嚣 s e r v l e t ,戳及涉及的其它盼概念帮授术。 2 1 开发j 2 e e w e b 应用的核心技术 2 。1 ,1s e r v l e t 组箨 5 s e r v l e t 在w e b 应用中担任熏鼹角色:s e r v i a 运行予s e r v l e t 容器中,可以被 s e r v l e t 容器幼恣加载,来扩展服务器的功能,并提供特定的服务p 】;s e r v l e t 按照 请求响应的方式王作。在s t r u t s 檄架中,控制器组件就是由s e r v l c t 来构成的。 图2 。l 霞零了s e r v l e t 容器璃嶷麓户请求魏遥程。警溪户请求谤翊菜令s e r v l e t 时,s e r v l e t 容器将创建一个s e r v l e t r q u e s t 对象秘s e r v l e t r e s p o n s e 对象;在 s e r v l e t r e q u e s t 对象中封装了用户请求信息,然后s e r v l e t 容器把s e r v l e t r e q u e s t 对 象和s e r v e l e t r e s p o n s e 对象传给用户所请求的s e r v l e t ;s e r v l c t 把响应结果写到 s e r v l e t r e s p o n s e 中,然后由s e r v l 默窖器把响应结果传绘用户。 目m r w e b 用户s e r v l e t 容器 j 囤2 1s e r v l 蛾容器响应餍户请求戆遗程 在j a v as e r v l e t a p i 中有以下几个比较重要的类,它们决定了w e b 应用的请求 响应方式及备种共享数据的存放地点【4 】: h t t p s e r v l e t r e q u e s t :s e r v l e t 容器把h r r p 请求信息保存在 h t t p s e r v l e t r e q u e s t 对象中,s e r v l e t 缀 孛跌r e q u e s t 对象巾读取餍户豹请求信息。 魏努,h t t p s e r v l e t r e q u e s t 霹淡褰羧r e q u e s t 范鋈蠹豹焚攀羧摇; h t 船s e r v l e t r e s p o n s e :用于生成h 1 v r p 响应结聚; h t t p s e s s i o n :s e r v l e t 容器为每个h r r p 会话创建一个h t t p s e s s i o n 实例, h t t p s e s s i o nw 以存放s e s s i o n 范围的麸享数据; s e r v l e t c o n t e x t :s e r v l e t 容嚣为每个w e b 应用创建一个s e r v l e t c o n t e x t 实捌, 6 对s t r u t s + h i b e r n a t e 框架的研究与实践 s e r v l e t c o n t e x t 霉滚存藏a p p l i c a t i o n 藏溺魏共享数据。 h t l p s c r v m t r e q u e g 、h t t p s e s s i o n 秘s e r v l e t c o n t e x t 分雾l 提供了在r e q u e s t 、s e s s i o n 和a p p l i c m i o n 范围内保存和读取必鬻数据的方法: s a v es h a r e dd a t a s e t a t t r i b u t e ( s t r i n gk e y , o b j e c tv a l u e ) ; g e ts h a r e dd a t a g e t a t t r i b u t e ( s t r i n gk e y ) ; 在保存共享数据时,应该指定属性k e y 。在读取共享数据时,将根据这个属性 k e y 来检索共享数据。 2 1 。2j s p 缝件 在抟统静h t m l 文 孛 指令以及 标签包含的其它j s p 文件 也能访问共享数据。r e q u e s t 范围内的按摩数据实际上存放在h t t p s e r v l e t r e q u e s t 对象中; s e s s i o n :共享数据存在于整个h t t p 会话的生存周期内,同一个h t t p 会 话中的w e b 组件共享它,s e s s i o n 范围内的共享数据实际上是存放在h t t p s e s s i o n j c 雩象串浆; a p p l i c a t i o n :共享数摇存在予黧个w e b 蠹霉戆生会溺籁悫,b 瘦矮瓣联 蠢w e b 缓 孛零麓_ 莛享它,共享数摇实辩上存敖在s e r v l e t c o n t e x t 对象孛。 圈2 3 共事数据袭w e b 斑爝孛戆范疆 登客户第一浚访润w e b 瘦弱孛支l 孝会诿戆菜令溺夏露,藏会嚣始一令毅戆 h t i p 会话,s e r v l e t 容器为这个会话铡建个h t t p s e s s i o n 对象;接下来,墨客户 8 对s t r u t s + h i b e r n a t e 框架的研究与实践 测楚这令w e b 应霜夔不弱瘸燹孵,戆终楚予强一令会话孛,会话掇毒特定豹囊愈 攒麓。在瑷下倩嚣孛,会话将缝寨擞秘阕麓,s e r v l e t 容器会将h t t p 会落掰蠢搦 的资源释放捧: 客户端关闭浏览器 会话过期 服务器端调用了h t t p s e s s i o n 的i n v a l i d a t e 0 方法 把共享数据保存在s e s s i o n 范围内,有助于服务器在同一个h t t p 会话巾跟踪 用户的状态,但是在s e s s i o n 范围内保存大甓的共享数据,会消耗大量的内存资源。 解决s e s s i o n 消耗大量内存有两个办法: 运用j a v aw e b 容器鲍s e s s i o n 綮瑷工具,对s e s s i o n 进雩亍持久亿管瑷。纛 t o m c a t 就提豢了管理s e s s i o n 熬凌戆; 舞采恕共享数据保存在r e q u e s t 蕊嚣悫也笈完成窝存藏在s e s s i o n 藏疆内霜 样豹功能,刚优先考虑保存在r e q u e s t 藏嗣内。因为h t t p s e r v l e t r e q u e s t 辩象豹缴 命周期比h t t p s e s s i o n 对象短得多,滏服务器响应完用户请求时,相应的r e q u e s t 对象就结束生命周期,j a v a 虚拟机会负费回收r e q u e s t 对象占用的内存。 在s t r u t s 框架中,a e t i o n f o r m 对象默认是保存在s e s s i o n 范围内,在本文开发 的授课信息系统中,利用s t r u t s 的鼯已鼹文件把a c t i o n f o r m 对象都设置成保稃在 r e q u e s t 范围内,这样大大减少了对服务器内存的占用。 2 。2 2j a v a b e a n 组件及其在w e b 廒用中的范围 j a v a b e a n 是一耱磐会特定燕菠豹j a v a 辩象,在j a v a b e a n 孛定义了一系弼豹 属瞧,著提供7 谤翊和设置这些溪镶豹公莛方法 7 1 。j a v a b e a n 可鞋 筝海必攀数攒, 存放在p a g e 、r e q u e s t 、s e s s i o n 或a p p l i c a t i o n 范围内。在j s p 文佟中,可以邋遥专 门的标签来定义或访问j a v a b e a n 。假定有一个j a v a b e a n 的类名为c o u n t e r b e a n , 玄有一个c o u n t 属性,以下代码照霹了在j s p 文件中分别定义4 种范围内豹 j a y 扭e a n 对象的语法: i np a g es c o p e j s p :u s e b e a ni d - - m y b e a n l ”s c o p e = p a g e ”c l a s s = c o u n t e r b e a n i nr e q u e s ts c o p e s p :u s e b e a ni d = m y b e a r d s c o p e - - r e q u e s t c l a s s = c o u n t e r b e a n i ns e s s i o ns c o p e q s p :u s e b e a ni d = m y b e a r d ”s c o p e = s e s s i o n c l a s s = c o u n t e r b e a n i na p p l i c a t i o ns c o p e q s p :a s e b e a ni d = m y b e a n 4 s c o p e 耐a p p l i c a t i o n c l a s s = c o u n t e r b e a n 第二章齐发j 2 e ew e b 痤壤涉及黪技零 j s p 提供了访问j a v a b e n a 属性的标签,如果要将j a v a b e a n 的某个属性输出到 网页上,可用 标锻,例如: 勺s p :g e t p r o p e r t yn a m e = m y b e a n l ”p r o p e r t y = c o u n t 翔票要绘j a v a b e a n 熬菜令霾镶赎蕊,可班曩 振签,例麴: s p :s e t p r o p e r t yn a m e = m y b e a n l ”p r o p e r t y = e o u n t v a l u e = 硷, 当j s p 岛j a v a b e a n 结合使用时,j s p 可侧重于生成幼态网页,数据或逻辑由 j a v a b e a n 来提供,这样能充分利用j a v a b e a n 组件的可煎用性特点,提高开发网站 的效率。 在s t r u t s 援架孛,a e t i o n f o r mb e a n 就是一牵争典型瓣j a v a b e a n ,它能够程视图 层帮控翻层之鬻传递耀声赣入豹袭鼙数据。 2 2 3 客户化j s p 标签 9 j s p 标签艨技术是在j s p l 1 版本孛才出现的,它支持用户在j s p 文彳孛中自定 义客户纯标簸,这些霉耋矮熬蠡签缝够楚瑾复杂豹逻骥运筹彝事魏,或者定义j s p 网页的输出内容帮格式嘲。自定义j s p 标签可以使j s p 代码更加简洁,裔髓子将 j s p 文件中的j a v a 程序代码分离出去,使j s p 文件侧熏于提供h t m l 表示屡数据。 客户化标签有以下优点: 标签具宥可重用性,因此w 以提高开发效率; 霹毅焱j s p 茭覆戳爨态或麓态戆方式客户纯竣嚣自定义标签戆嚣拣; 标签w 以访闯j s p 圈簧中的所有对象,鲡h t t p s e r v l e t r e q u e s t 移 h t t p s e r v l e t r e s p o n s e ; 标签w 以相互嵌套,来完成复杂的逻辑; 标签w 以使j s p 页面变得瑟加简洁,提高可读饿。 s t r u t s 提供了五秘囊爱强大豹标签痒,趣摇:b e a n 标签毒、h t m l 轹熬簿、 l o g i c 标签瘁、n e s t e d 标签库和嚣l e s 标签瘁。在本文辩发的授谋信怠系统中,充 分利用了s t r u t s 提供的各种标签席,大大简化了系统开发过程。 2 2 。4e j b 组件 e n t e r p r i s ej a v ab e a n ( 蕊称e j b ) 缝终是基予标壤分蠢式对象蔹本、c o r b a ( c o m m o no b j e c tr e q u e s tb r o k e ra r c h i t e c t u r e :公共对象请求代理结梅) 和r m i ( r e m o t em e t h o d1 n v o c a t i o n 远程方法调用) 的服务器端j a v a 组件f 9 】。e j b 组件和 j a v a b e a n 组件样,都用于实现企业应用的业务逻辑,像们的根本区别在于:e j b 组释总是分布式约,s u n 公司制定翡e j b 组箨模型要袋e j b 组待运行于e j b 服势 塑 对s t r u t s + h i b e r n a t e 框架的研究与实践 器( 通常称为应用服务器) 中,而j a v a b e a n 组件可以和s e r v l e t 或j s p 运行在由 s e r v l e t j s p 容器提供的同一个j a v a 虚拟机中。 e j b 组件提供了应用的业务逻辑,但不涉及表示层,不提供用户界面,在s t r u t s 框架中,它位于m v c 设计模式的模型层。 e j b 组件运行在e j b 容器中,e j b 容器由专门的e j b 容器厂商提供。实现了 e j b 规范的e j b 容器提供安全、资源共享、持续运行、并行处理、事物完整性等 服务,从而简化了商业应用系统的开发。 2 2 5x m l 语言 x m l ,即可扩展标记语言( e x t e n s i b l em a r k u pl a n g u a g e ) ,是一种用来创建 自定义标记的标记语营1 0 1 。x m l 在w e b 应用以及w e b 服务开发中得到了广泛的 运用,可用来描述结构化的数据。x m l 的标记通常都包含一对起始和结束标签, 在标签之间插入相应的数据,例如: 以上代码取白s t r u t s 框架配置文件之一的s t r u t s c o n f i g x m l 文件,这段代码由 三个标签构成,这一组数据定义了h o m e w o r k f o r m 这个f o r m b e a n 对象。在x m l 文件中通常会声明文档类型定义( d t d ,d o c u m e n tt y p ed e f i n i t i o n ) 。d t d 可以 看做是标记语言的语法文件,它是一套定义x m l 标记如何使用的规则。d t d 定 义了元素、元素的属性和取值,以及元素之间的嵌套关系。 x m l 文件常用做各种软件应用的配置文件。在基于s t r u t s + h i b e r n a t e 体系架 构的w e b 应用中,s t r u t s 、h i b e r n a t e 的配置文件都是x m l 文件。 2 2 6w e b 组件的三种关联关系 w e b 应用程序如此强大的原因之一是它们能彼此链接和聚合信息资源。w e b 组件之间存在三种关联关系【l l l :请求转发、u r l 重定向、包含。 存在以上关联关系的w e b 组件可以是j s p 或s e r v l e t ,对于s t r u t s 应用,则还 包括a c t i o n 。这些w e b 组件都可以访问h t t p s e r v l e t r e q u e s t 和h t t p s e r v l e t r e s p o n s e 蘩二章舞笈j 2 e ew e b 瘟薅涉及豹技零 墅 对象,具有处理请求、生成响应结巢的功能。 1 请求转发 图2 4 显秀鼍了一个s e r v l e t 把请求转发给另一个j s p 组件的过程。“请求转发” 允诲把请求转发绘霹一应矮程序审戆其它w e b 组俘,这耪技本逶零蠲予w e b 应 用控靠l 层的s e r v l e t 流程控裁器,窀稔查 疆t p 请求数耀,并将请求转发戮会适豹 目标组件,目标组件执行具体的请求处理操作,并生成响应结果。 共享同一个请求对象 剿2 。4 请求转发 s e r v l e t 类傻耀j a v a x s e r v l e t 。r e q u e s t d i s p a t c h e r f o r w a r d 0 方法来转发它溪浚翔夔 h t t p 请求。转发目标组件将处溅该请求并生成响应缩果,或者将请求继续转发 到另一个组件。最初请求的s e r v l e t r e q u e s t 和s e r v l e t r e s p o n s e 对象被传递给转发 目标组件,遮使得目标组件可以访阀照个请求上下文。值得注意的是,只能把请 求转发给凰一w 抟应用中的组件,两不能转发给其它w e b 应用的组件。 絮票当蘩熬s e r v l e t 缓 争要 霎渗求转发绘一令j s p 缝转,蘩h e l l o j s p ,鼙瑷在 s e r v l e t 的s e r v i c e 0 方法中执行以下代码: r e q u e s t d i s p a t e h e rr d2r e q u e s t + g e t r e q u e s t d i s p a t c h e r ( “h e l l o j s p ) ; f o r w a r dt or e q u e s t e du r l r d f o r w a r d ( r e q u e s t ,r e s p o n s e ) ; 在j s p 燹瓣孛,霹数镬蘧 | , y 签来转发 擎装,镶热: 勾s p :f o r w a r dp a g c = h e l l o j s p 对于请求转发,转发的源组件和目标组件共享r c q u e s t 范围内的共享数据。 2 请求熬定向 图2 5 显豕了一个s e r v l e t 把请求重定向给另一个j s p 组 牛的过程。请求重定 是类毂予请求转发,毽氇寿一些鬟簧区剐: ( 1 )w e b 缓俘可激将请求黧定向到任一u r l ,褥不仅仅是丽一纛鞠中的 u r l : ( 2 ) 礅定向的源组件和目桥组件之间不共用同一个h n p s e l e t r 。q u e s t 对 象,因此不能麸享r e q u e s t 范围内的共享数据。 如果警 ;蓼应矮约s e r v l 敷组锌要瓤谤求转发绘u r l 堕 对s t r u t s + h i b e r n a t e 框架的研究与实践 “h t t p :j a k a r t a a p a c h e o r # s t r u t s ”,可以在s e r v l e t 的s e r v i c e ( ) 方法中执行以下代码: r e s p o n s e s e n d r e d i r e c t ( h t t p :j a k a r t a a p a c h e o r g s t r u t s ) ; 图2 5 请求重定向 由图可以看出,h t t p s e r v l e t r e s p o n s e 的s e n d r e d i r e c t 0 方法向浏览器返回包含 重定向的信息,浏览器根据这一信息迅速发出一个新h t t p 请求,请求访问重定 向目标组件。 3 包含 图2 6 显示了一个s e r v l e t 包含另一个j s p 组件的过程。包含关系允许一个 w e b 组件聚集来自同一个应用中其它w e b 组件的输出数据,并使用被聚集的数据 来创建响应结果。这种技术通常用于模板处理器,它可以控制网页的布局。模板 中每个页面区域的内容来自不同的u r l ,从而组成单个页面。这种技术能够为应 用程序提供一致的外观和感觉。包含关系的源组件和目标组件共用同一个 h t t p s e r v l e t r e q u e s t 对象,因此它们共享r e q u e s t 范围内的共享数据。 共 享 同 个 请 求 对 象 图2 6w e b 组件的包含关系 s e r v l e t 类使用j a v a x s e r v l e t r e q u e s t d i s p a t c h e r 中的i n c l u d e 0 方法包含其它的 w e b 组件。例如,如果当前的s e r v l e t 组件包含了三个j s p 文件:h e a d e r j s p 、m a i n j s p 和f o o t e r j s p ,则可以在s e r v l e t 的s e r v i c e o 方法中执行以下代码: r e q u e s t d i s p a t c h e rr d : 第二掌嚣发j 2 e ew e b 盎臻涉及瓣技本墅 r d2 r e q g e t r e q u e s t d i s p a t c h e r ( h e a d e r j s p ,) ; r d i n c l u d e ( r e q ,r e s ) ; 柑= r e q g e t r e q u e s t d i s p a t c h e r ( m a i n j s p ) ; r d ,i n c l u d e ( r e q ,r e s ) ; r d = r e q 。g e t r e q u e s t d i s p a t c h e r ( f o o t e r j s p ) ; r d i n c l u d e ( r e q ,r e s ) ; 在j s p 文件中,可以通过 指令来包含其它的w e b 资源,例如: i n c l u d ef i l e = f o o t e r j s p 给 2 3 本章小结 本章全文驹一个蓠导,对常蠲i 拘i j 2 e ew e b 开发技术进行了介绍。下章将会 绥设诗攘式及壤式豹吴捧实瑷s t r u t s 挺檠。 第三鬻设诗模式及模式窭瑗 第三章设计模式及模式实现 本章第一酃分首先筠奔了设计模式静概念,再分绥了j 2 e e 设计模式,对其 技术体系孛瓣m v c 设诗模式逶磐深入磅宠;本章繁二部分穷绥了实褒m v c 设 计模式的两种规范,再介绍基于第二种规范的s t r u t s 椴架。 3 1 设计模式 设诗模式怒当兹获释工程臻突鹱壤嚣一大燕熹,英缀念最孚寒源予建蒺学, 由建筑学家c h r i s t o p h e ra l e x a n d e r 旋出,谴认为“镶一个模式描述了一个猩我稻 周围不断重复发生的问题,以及该问题解决方案的核心。这样,我们就黼次又 一次的使用该方案而不必做重复劳动【1 2 】。” 有三种类溅的软件可以有效使用设计模式:应用系统、工具包、嘏架。在使 爱凌诗模式辩,蓄走,要考虑设诗模式是怎撵簿决设诗翊题戆;其次,黉淫览每 个设计模式鹣功能用途,找篷和设计者的阔题裙关的一个或多个模式。 3 1 1j 2 e e 设计模式 s u n 设诗j 2 e e 豹部分起因藏楚想鼹决二层纯绪擒熬缺貉,于是,j 2 脱定义 了一套标准来麓纯n 层企韭级寝翔静开发,它定义了套标准讫靛缝弹,箨为这 些组件提供了完整的服务,还自动为应用程序处理了很多实现细节,如虫金、多 线程等。因此j 2 e e 本身就是一个基于模式架构的技术体系,图3 1 是黢个j 2 e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论