




已阅读5页,还剩56页未读, 继续免费阅读
(计算机软件与理论专业论文)基于服务数据对象的数据编程简化的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 随着i t 行业的快速发展和企业基本业务需求的不断增长,目前对数据访问的 复杂性正日益增加。然而,近年来,随着面向服务体系结构( s e r v i c e o r i e n t e d a r c h i t e c t u r e ,s o a ) 软件框架的提出,服务数据对象( s e r v i c ed a t a0 b j e c t s ,s d 0 ) 作为面向服务的体系结构的基础规范,大大的简化了的数据编程,其降低数据访 问复杂性的作用显得尤为突出。将s d o 应用于现已广泛应用的s t r u t s 框架,必将 会使开发人员从访问特定的后端数据的技术细节中解放出来,提高了他们的工作 效率,使他们主要专注于业务逻辑。 本文主要研究了数据编程的简化问题。作者首先阐述了该课题研究的背景和 现状,指出了研究的目的和意义;然后在详细地介绍了s d o 软件框架和s t r u t s 软 件框架的基础上,深入分析了s d o 框架和s d o 规范,并提出了一种s d o 框架对 s t r u t s 框架扩展以简化数据编程的应用;随后重点研究了基于s d o 框架的s t r u t s 框架扩展模式的基本实现,并着重研究了实现的关键技术自动化更新数据访 问层;最后,通过一个网上订单系统的应用实例,验证了自动化更新数据访问层 的功能,阐述了数据编程的简化的具体实现过程,并在w i n d o w s 环境下利用 e c l i p s e + j b o s s 平台实现了其中的主要构件,即基于服务数据对象的数据编程简化的 实现。 关键词:服务数据对象( s d o ) 简化数据编程数据访问服务( d a s ) 软件框架 a b s t r a c t w i t ht h er a p i dd e v e l o p m e n to fi ti n d u s t r ya n dt h eg r o w i n gd e m a n df o rb a s i c b u s i n e s so fe n t e r p r i s e s ,a tp r e s e n t ,t h ec o m p l e x i t yo fa c c e s s i n gt od a t ai sg r o w i n gd a y a f a rd a y i nr e c e n ty e a r s ,h o w e v e r , w i t ht h eb r i n g i n gf o r w a r ds e r v i c eo r i e n t e d a r c h i t e c t u r e ( s o a ) o fs o f t w a r ea r c h i t e c t u r e ,s e r v i c ed a t ao b j e c t s ,w h i c hi sab a s i c s p e c i f i c a t i o no fs o a ,s i m p l i f i e sg r e a t l yd a t ap r o g r a m m i n g i tp l a y sa l li m p o r t a n tr o l e s i nd e c r e a s i n gt h ec o m p l e x i t yo fa c c e s s i n gd a t a s oi fw ec a na p p l ys d ot os t r u t s f r a m e w o r ka p p l i e dw i d e l y , s o f t w a r ed e v e l o p e r sw i l lb ec e r t a i nt ob el i b e r a t e df r o m t e c h n i c a ld e t a i l so fa c c e s s i n gt h eg i v e nb a c k g r o u n dd a t a t h a tw i l li n c r e a s et h e i rw o r k e f f i c i e n c ya n dm a k et h e mb ei n v o l v e di nb u s i n e s sl o g i c t h i sp a p e rm a i n l yr e s e a r c h e dt h ep r o b l e mo fs i m p l i f y i n gd a t ap r o g r a m f i r s t ,t h e a u t h o rd e s c r i b e dt h eb a c k g r o u n da n ds t a t u so ft h es t u d yo ft h es u b j e c t ,a n dp o i n t e do u t t h ep u r p o s ea n ds i g n i f i c a n c eo ft h es t u d y a n dt h e n ,o nt h eb a s eo fi n t r o d u c i n gs d o s o f t w a r ef r a m e w o r ka n ds t r u t ss o f t w a r ef r a m e w o r ki nd e t a i l s ,t h i sp a p e rd e e p l y a n a l y z e ds d os o f t w a r ef r a m e w o r ka n ds d os p e c i f i c a t i o na n dr a i s e da na p p l i c a t i o no f s t r u t sf r a m e w o r kw i t ht h ee x t e n s i o no fs d of r a m e w o r kt os i m p l i f yd a t ap r o g r a m m i n g a n dt h e n ,a st h ek e y , t h i sp a p e rs t u d i e dt h eb a s i cr e a l i z a t i o no ft h es t r u t sf r a m e w o r k e x t e n s i o nm o d eb a s e do ns d of r a m e w o r k ,a n df o c u s e do no n eo ft h ek e yw a y s a u t o u p d a t i n gd a t aa c c e s sl a y e rf i n a l l y , t h r o u g ht h ee x a m p l eo fap u r c h a s eo r d e ro n l i n e a p p l i c a t i o ns y s t e m ,t h i sp a p e rv a l i d a t e dt h ef u n c t i o no fa u t ou p d a t i n gd a t aa c c e s sl a y e r , e x p a t i a t e do nt h ei m p l e m e n t i n gp r o c e s sb a s e do ns i m p l i f y i n gd a t ap r o g r a m m i n ga n d r e a l i z e do n eo ft h em a i nc o m p o n e n t su s i n gt h ep l a t f o r mo fe c l i p s e + j b o s si nw i n d o w s t h i si sr e s e a r c ha n di m p l e m e n t a t i o no fs i m p l i f y i n gd a t ap r o g r a m m i n gb a s e do ns e r v i c e d a t ao b j e c t k e y w o r d :s e r v i c ed a t a0 b j e c t , s i m p l i f y i n gd a t ap r o g r a m m i n g ,d a t aa c c e s s s e r v i c e s ,s o f t w a r ef r a m e w o r k 创新性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不 包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或 其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做 的任何贡献均已在论文中做了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 本人签名:萄驰 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕 业离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。 学校有权保留送交论文的复印件,允许查阅和借阅论文:学校可以公布论文的全 部或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。 本人签名:生里盔k 导师签名:至 壹至 日期弘! 卜j : 第一章绪论 第一章绪论 1 1需求分析及研究背景 1 1 1j a v a 平台的局限性 j a v a 平台和j 2 e e 现已成为非常流行和广泛应用的技术,而且这些技术仍在不 断的推陈出新,虽然j a v a 平台和j 2 e e 提供了大量的数据编程模型和a p i ,但是这 些技术大都是分散的,而且通常不能服从于工具和框架,有过高的复杂性,致使 框架本身僵硬脆弱,无法促进业务的增长l 。在对异构数据源访问时经常会带来数 据不统一的问题,对静态和动态数据a p i 缺乏统一支持,无法去除应用代码与数 据访问代码的耦合性,对数据库操作的性能要求极高,往往因为数据库连接方面 的性能而使整个系统性能达不到要求。对数据访问的复杂性正在日益增加。而且 其中的一些技术难点无法克服,技术可能难以使用,功能不够丰富,无法支持常 见的应用需求。 1 1 2 解决数据编程局限性的首要选择 最近由b e a 和i b m 最近共同发布的一项规范服务数据对象( s e r v i c e d a t ao b j e c t s ,s d o ) 是对数据访问的复杂性增加问题的一个很好的解决。s d o 本质上是j a v a 平台的一种数据编程框架和a p i ,主要用于简化数据编程,它统一 了不同数据源类型的数据编程,提供了对通用应用程序模式的健壮支持,并使应 用程序、工具和框架更容易查询、读取、更新和检查数据1 2 j 。s d o 规范是一项新 兴标准,用于表示企业应用程序中的数据。服务数据对象提供了对常见应用模式 的有力支持,并允许应用程序、工具和框架更轻松地查询、查看、绑定、更新和 内省数据1 4 j 。 s d o 旨在创建一个统一的数据访问层,以一种可以服从工具和框架的易用方 式为不同的数据源提供一种数据访问解决方案。s d o 不是为了满足替换底层数据 访问技术的需求而开发的【i 】。s d o 的目标是: 对异构数据源的统一数据访问。 对静态和动态数据a p i 的统一支持。 对工具和框架的支持。 对断开编程模型的支持 对基于常见设计模式的定制数据访问层的支持。 2 基于服务数据对象的数据编程简化的研究与实现 应用代码与数据访问代码的去耦合性。 本文将重点就这一方向展开研究。 1 1 3目前国内外研究的现状 从2 0 0 5 年1 月,1 8 家致力于联合推动创建s o a ( 面向服务的框架) 行业 标准的领先技术厂商,宣布了s c a ( s e r v i c ec o m p o n e n ta r c h i t e c t u r e ,服务组件框 架) 和s d o ( s e r v i c ed a t ao b j e c t ,服务数据对象) 规范中关键部分的完成,并将 正式提交给o a s i s ( t h eo r g a n i z a t i o nf o rt h ea d v a n c e m e n to fs t r u c t u r e di n f o r m a t i o n s t a n d a r d s ,结构化信息标准促进组织) ,通过其开放式标准过程进行推动。 据称今天,为了加速采纳s o a 原理和方法,推出处理方式运动的支持者希 望在o a s i s 组织的支持下,对项目的管理和任务分配将形成一种新的可以接受的 方式。s c a 和s d o 被下面的厂商大力支持,他们是:s a p 、i b m 、o r a c l e 、b e a 、 i o n a 、r e dh a t 、s u nm i c r o s y s t e m s 、s y b a s e 、c i s c o 。s c a s d o 能够在企业和服务 提供者之间为基于服务应用功能和数据的传输形成编程级的工业标准【3 】。 由于是在o a s i s 组织下开发s c s d o 工业标准,这些框架化的方法可以 加入已被广泛接受的w e bs e r v i c e 标准( u d d i 、w s d l 、s o a p 、w s 宰) 为产品厂 商提供一个协调一致的框架基础,并使用最行之有效的方式。o a s i s 正致力于w e b 服务标准的开发1 3 1 。 o a s i s 组织支持的这种新的方式将能够提供一个一般的、可以接受并广泛 使用的元数据基础和更广泛使用的b p e l 来书写跨平台服务的方式。s c a s d o 被 设计用来提供一般的方法来降低采纳跨服务类型和数据源异构性的s o a 所带来的 复杂性。 2 0 0 7 年5 月,i b m 将s c a1 0 和s d o2 1 版本正式提交给o a s i s ,通过其 开放式标准过程进行推动。 1 2 课题研究的目的和意义 通过本课题的研究,目的是简化数据编程,自动更新数据访问层,使工具和 框架支持对异构数据源的访问。使开发人员从访问特定的后端数据的技术细节中 解放出来,提高了他们的工作效率,使他们主要专注于业务逻辑。 从理论上讲,该课题的研究是对当前流行的热门技术一一s d o 和自动更新数 据访问层等技术的有效补充,为把新兴技术应用于具体实践架起了一座桥梁,解 决了相关的技术问题。从实践上讲,该课题的研究企业对数据的访问提供了更为 第一章绪论 方便有效的方式,使得企业可以更有效的利用后台数据,高效开发项目,增强企 业内部的信息交互,同时可以降低开发成本,缩短开发时间,获得更大的投资回 报率( r o i ) 1 2 2 】。因此,该课题的研究具有十分重要的现实意义。 i 3 本论文相关工作 在完成本论文的选题及写作过程中,作者的主要工作是: 1 对当前数据编程面临的问题进行了研究,分析了企业对数据编程的新需求, 从而指出了本论文研究的重要意义; 2 在详细地介绍了s d o 软件框架和s t r u t s 软件框架的基础上,深入分析了 s d o 框架和s d o 规范,并提出了一种s d o 框架对s t r u t s 框架扩展以简化数据编 程的应用,并说明其优点; 3 随后重点研究了基于s d o 框架的s t r u t s 框架扩展模式的基本实现,阐述了 系统的基本框架,着重研究了实现的关键技术自动化更新数据访问层,并对 该扩展模式对数据编程的简化作了概括; 4 通过一个网上订单系统的应用实例,阐述了数据编程的简化的实现过程, 并运用对订单的更新实现了自动更新数据访问层,简化了数据编程,最后并在 w i n d o w s 环境下利用e c l i p s e + j b o s s 平台实现了其中的主要构件,即基于服务数据 对象的简化数据编程的实现。从而从实践上证明了s d o 框架对s t r u t s 框架扩展的 应用以简化数据编程的可行性和可操作性,这必将会使开发人员从访问特定的后 端数据的技术细节中解放出来,使他们主要专注于业务逻辑。 1 4 本论文章节安排 本论文共有五章,各章的主要内容如下: 第一章绪论首先,对j a v a 平台的局限性进行了分析,指出了问题的关键所 在;然后,在分析该问题的基础上指出了本文研究的目的和意义;接着,介绍了 当前国内外对该问题的研究现状;最后,介绍了作者在论文写作过程中所做的工 作和论文各章节的安排。 第二章s t r u t s 软件框架和s d o 软件框架的研究研究分析了s t r u t s 软件框架的 基本要素和s d o 软件框架的基本要素,并对s d o 框架与s t r u t s 框架结合以简化数 据编程的优势进行了说明。 第三章s d o 模型应用于s t r u t s 软件框架的设计与实现本章首先通过对s d o 框架与s t r u t s 框架相结合和自动更新数据访问层技术的研究分析,结合了具体的规 范文件的实际分析和应用,提出了一种s d o 扩展s t r u t s 的框架;论述了构建这种 框架模式的般过程,分析了基于s d o 技术的数据操作,提出了系统规范文件的 基于服务数据对象的数据编程简化的研究与实现 定义技术。最后,重点提出了自动更新数据访问层的关键技术。 第四章基于s d o 扩展s t r u t s 软件框架的在线订单系统实例本章构建一个网 上购物系统,并论述了其业务流程规范文件结构,然后根据系统的业务逻辑论述 了s d o 模型扩展s t r u t s 软件框架以简化数据编程的过程,最后在w i n d o w s 环境下 利用e c l i p s e + j b o s s 平台上实现了其中的主要技术自动化更新数据访问层。 第五章总结及展望对论文的工作进行了总结,并展望了后续的研究重点。 下面将介绍s t r u t s 软件框架和s d o 软件框架的基本知识,并总结了二者结合 应用的优势。 第二章s t r u t s 软件框架和s d o 软件框架的研究 第二章s t r u t s 软件框架和s d o 软件框架的研究 本章首先研究了s t r u t s 软件框架及相关要素,然后研究了s d o 软件框架及相 关要素,最后对s d o 应用于s t r u t s 软件框架以简化数据编程的优点进行了说明。 2 1s t r u t s 软件框架及其要素 2 1 1s t r u t s 概述 s t r u t s 最早是作为a p a c h ej a k a r t a 项目的组成部分问世运作。项目的创立者希 望通过对该项目的研究,改进和提高j a v as e r v e rp a g e s 、s e r v l e t 、标签库以及面向 对象的技术水准。 s t r u t s 这个名字来源于在建筑和旧式飞机中使用的支持金属架。它的目的是为 了减少在运用m v c 设计模型来开发w e b 应用的时间。 s t r u t s 跟t o m c a t 、t u r b i n e 等诸多a p a c h e 项目一样,是开源软件,这是它的一 大优点,使开发者能更深入的了解其内部实现机制。 除此之外,s t r u t s 的优点主要集中体现在两个方面:t a g l i b 和页面导航。t a g l i b 是s t r u m 的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的j s p 开 发者而言,除了使用j s p 自带的常用标记外,很少开发自己的标记,或许s t r u t s 是一个很好的起点。 m v c 即m o d e l v i e w c o n t r o l l e r 的缩写,是一种常用的设计模式。m v c 减弱 了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。s t r u t s 是m v c 的一种实现,它将s e r v l e t 和j s p 标记( 属于j 2 e e 规范) 用作实现的一部分。s t r u t s 继承了m v c 的各项特性,并根据j 2 e e 的特点,做了相应的变化与扩展l l 引。s t r u t s 的工作原理,如图2 1 所示: 图2 1s t r u t s 的j r 作原理 基于服务数据对象的数据编程简化的研究与实现 2 1 2s t r u t s 框架 s t r u t s 框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于m v c 的w e b 应用程序的开发。 本节详细讨论s t r u t s 框架。将会看到s t r u t s 是如何清晰地区分控制,事务逻辑 和外观,从而简化了开发应用程序过程的。同时本节还将介绍s t r u t s 提供的类如何 使得开发工作更加简单,这些类包括: 控制程序流程的类; 实现和执行程序事务逻辑的类; 自定义的标记库使得创建和验证h t m l 表单更加容易。 一s t r u t s 体系结构 从m v c 角度观察s t r u t s 框架中的组件,框架分为三个部分:模型,视窗和控 制器。 1 模型 在s t r u t s 框架中,模型分为两个部分: 1 ) 系统的内部状态 2 ) 可以改变状态的操作( 事务逻辑) 内部状态通常由一组a c t i n f o r mj a v a b e a n 表示。根据设计或应用程序复杂度的 不同,这些b e a n 可以是自包含的并具有持续的状态,或只在需要时才获得数据( 从 某个数据库) 。 大型应用程序通常在方法内部封装事务逻辑( 操作) ,这些方法可以被拥有状 态信息的b e a n 调用。比如购物车b e a n ,它拥有用户购买商品的信息,可能还有 c h e c k o u t ( ) 方法用来检查用户的信用卡,并向仓库发定货信息。 小型程序中,操作可能会被内嵌在a c t i o n 类,它是s t r u t s 框架中控制器角色的 一部分。 2 视窗 由j s p 建立,s t r u t s 包含扩展自定义标签库,可以简化创建完全国际化用户界 面的过程。 3 控制器 s t r u t s 中,基本的控制器组件是a c t i o n s e r v l e t 类中的实例s e r v e l t ,实际使用的 s e r v l e t 在配置文件中由一组映射( 由a c t i o n m a p p i n g 类进行描述) 进行定义。 二s t r u t s 框架中的组件 框架中所使用的组件: a c t i o n s e r v l e t 控制器 a c t i o n c l a s s包含事务逻辑 第二章s t r u t s 软件框架和s d o 软件框架的研究 a c t i o n f o r m 显示模块数据 a c t i o n m a p p i n g 帮助控制器将请求映射到操作 a c t i o n f o r w a r d 用来指示操作转移的对象 a c t i o n e r r o r 用来存储和回收错误 s t r u t s 标记库 可以减轻开发显示层次的工作 下面将介绍各自在框架中所扮演的角色和责任。 1 s t r u t s 配置文件 这是将s t r u t s 组件结合在一起: s t r u t s c o n f i g x m l 。默认值 w e b i n f s t r u t s c o n f i g x m l 。配置文件可以定义: 全局转发 a c t i o n m a p p i n g 类 帮助控制器将请求映射到操作 a c t i o n f o r mb e a n 显示模块数据 j d b c 数据源 置全局转发 全局转发用来在j s p 页之间创建逻辑名称映射。转发都可以通过对调用操作映 射的实例来获得,例如: a c t i o n m a p p i n g l n s t a c e f i n d f o r w a r d ( “l o g i c a l n a m e ”) ; 全局转发的例子: 属性描述 n a m e全局转发的名字 p a t h与目标u r l 的相对路径 2 a c t i o n s e r v l e t 类介绍 框架中的控制器组件是有o r g a p a c h e s t r u t s a c t i o n a c t i o n s e r v l e t 类实现的,这个 类是j a v a x s e r v l e t h t t p h t t p s e r v l e t 类的扩展。 s t r u t sc o n t r o l l e r 基本功能是: 1 ) 截获用户的h t t p 请求 2 ) 把这个请求映射到相应的a c t i o n 类,如果这是此类收到的第一个请求, 将初始化实例并缓存。 3 ) 创建或发现一个a c t i o n f o r mb e a n 实例( 看配置文件是否定义) ,然后将 请求过程移植到b e a n 4 ) 调用a c t i o n 实例的p e r f o r m ( ) 方法并将a c t i o f o r mb e a n ,a c t i o nm a p p i n g 对 象,r e q u e s t 和r e s p o n s e 对象传给它。 5 ) p e r f o r m 返回一个a c t i o n f o r w o r d 对象,此对象连接到相应的j s p 页面 a c t i o n s e r v l e t 配置 需要在w e b x m l 中声明a c t i o n s e r v l e t ,并且将它配置成启动时进行加载。大多 基于服务数据对象的数据编程简化的研究与实现 数情况下,标准的s e r v l e t 就能够满足用户需要。第一次收到特定请求的u r i 时, a c t i o n s e r v l e t 将适当的a c t i o n 类进行实例化,然后a c t i o n s e r v l e t 在a c t i o n 类实例 中以s e r v l e t 为变量名存储一个引用。当被实例化后,a c t i o n 类会被暂存以备再用。 3 a c t i o n m a p p i n g 类介绍 将特定请求映射到特定a c t i o n 的相关信息存储在a c t i o n m a p p i n g 中, a c t i o n s e r v e l t 将a c t i o n m a p p i n g 传送到a c t i o n 类的p e r f o r m ( ) 方法,a c t i o n 将使用 a c t i o n m a p p i n g 的f i n d f o r w a r d o 方法,此方法返回一个指定名称的a c t i o n f o r w a r d , 这样a c t i o n 就完成了本地转发。若没有找到具体的a c t i o r t f o r w a r d ,就返回一个n u l l 4 a c t i o n 类 a c t i o n 类真正实现应用程序的事务逻辑,它们负责处理请求。在收到请求后, a c t i o n s e r v l e t 会: 为这个请求选择适当的a c t i o n ,如果需要,创建a c t i o n 的一个实例,调用a c t i o n 的p e r f o r m ( ) 方法,如果a c t i o n s e r v l e t 不能找到有效的映射,它会调用默认的a c t i o n 类( 在配置文件中定义) 。 如果找到了a c t i o n s e r v l e t 将适当的a c t i o n m a p p i n g 类转发给a c t i o n ,这个a c t i o n 使用a c t i o n m a p p i n g 找到本地转发,然后获得并设置a c t i o n m a p p i n g 属性。根据 s e r v l e t 的环境和被覆盖的p e r f o r m ( ) 方法的签名,a c t i o n s e r v l e 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 对象。 所有a c t i o n 类都扩展o r g a p a c h e s t r u t s a c t i o n a c t i o n 类,并且覆盖类中定义的某 一个p e r f o r m ( ) 方法。a c t i o n 类必须以“线程安全”的方式进行编程,因为控制器会 令多个同时发生的请求共享同一个实例,相应的,在设计a c t i o n 类时就需要注意 以下几点: 1 ) 不能使用实例或静态变量存储特定请求的状态信息,它们会在同一个操作 中共享跨越请求的全局资源 2 ) 如果要访问的资源( 如j a v a b e a n 和会话变量) 在并行访问时需要进行保 护,那么访问就要进行同步。 5 a c t i o n f o r m 类 框架假设用户在应用程序中为每个表单都创建了一个a c t i o n f o r mb e a n ,对于 每个在s t r u t s - c o n f i g x m l 文件中定义的b e a n ,框架在调用a c t i o n 类的p e r f o r m ( ) 方法 之前会进行以下操作: 在相关联的关键字下,它检查用于适当类的b e a n 实例的用户会话,如果在会 话中没有可用的b e a n ,它就会自动创建一个新的b e a n 并添加到用户的会话中1 5 j 。 对于请求中每个与b e a n 属性名称对应的参数,a c t i o n 调用相应的设置方法。 当a c t i o n p e r f o r m 0 被调用时,最新的a c t i o n f o r mb e a n 传送给它,参数值就可 以立即使用了。 第二章s t r u t s 软件框架和s d o 软件框架的研究 9 a c t i o n f o r m 类扩展o r g a p a c h e s t r u t s a c t i o n a c t i o n f o r m 类,程序开发人员创建 的b e a n 能够包含额外的属性,而且a c t i o n s e r v l e t 可能使用反射( 允许从已加载的 对象中回收信息) 访问它。 应该在自己的b e a n 里覆盖v a l i d a t e ( ) 方法,并在配置文件里设置 元素的 v a l i d a t e 为t r u e i5 1 。在a c t i o n s e r v l e t 调用a c t i o n 类前,它会调用v a l i d a t e ( ) ,如果返 回的a c t i o n e r r o r s 不是n u l l ,则a c t i n f o r m 会根据错误关键字将a c t i o n e r r o r s 存储 在请求属性列表中。 如果返回的不是n u l l ,而且长度大于0 ,则根据错误关键字将实例存储在请求 的属性列表中,然后a c t i o n s e r v l e t 将响应转发到配置文件 元素的i n p u t 属 性所指向的目标。 如果需要执行特定的数据有效性检查,最好在a c t i o n 类中进行这个操作,而 不是在a c t i o n f o r m 类中进行。 典型的a c t i o n f r o mb e a n 只有属性的设置与读取方法( g e t x x x ) ,而没有实现事 务逻辑的方法。只有简单的输入检查逻辑,使用的目的是为了存储用户在相关表 单中输入的最新数据,以便可以将同一网页进行再生,同时提供一组错误信息, 这样就可以让用户修改不正确的输入数据。而真正对数据有效性进行检查的是 a c t i o n 类或适当的事务逻辑b e a n 。 6 a c t i o n f o r w a r d 类 目的是控制器将a c t i o n 类的处理结果转发至目的地。 a c t i o n 类获得a c t i o n f o r w a r d 实例的句柄,然后可用三种方法返回到 a c t i o n s e r v l e t ,所以可以这样使用f i n d f o r w a r d o : a c t i o n s e r v l e t 根据名称获取一个全局转发 a c t i o n m a p p i n 实例被传送到p e r f o r m ( ) 方法,并根据名称找到一个本地转发。 7 错误处理 s t r u t s 提供了两个类来处理错误:a c t i o n e r r o r s 和a c t i o n e r r o r ,它们都扩展 o r g a p a c h e s t r u t s a c t i o n 。a c t i o n e r r o r s 保存着a c t i o n e r r o r 对象的集合,其中每一个 代表了独立的错误信息【1 8 】。每个a c t i o n e r r o r 都包含了关键字,能够映射到资源文 件中存储的错误信息,而这个资源文件是在a c t i o n s e r v l e t 初始化参数中指定的。 a c t i o n e r r o r 类定义了一组重载的构造器来创建错误信息,第一个构造器方法使 用一个字符串作为参数。 a c t i o n e r r o r 类从不独立进行错误处理,它们总是被存储在a c t i o n e r r o r s 对象中。 a c t i o n e r r o r s 对象保存a c t i o n e r r o r 类的集合以及它们特定的属性值,可以使用自己 定义的属性值,或是使用a c t i o n e r r o r s g l o b a le r r o r 。 l o 基于服务数据对象的数据编程简化的研究与实现 2 2w e bs e r v i c e 技术 s t r u t s 框架在本质上是基于w e bs e r v i c e 技术的,s t r u t s 的v i e w 层是使用j s p 进行表示的,j s p 中除了使用基本的h t m l 标签外,还大量的使用了s t r u t s 自带的标 签。s t r u t s 提供了非常多的标签,依据功能和使用习惯的不同被分到了五个标签库 中:它们是b e a nt a g s 、h t m lt a g s 、l o g i ct a g s 、n e s t e dt a g s 和t i l e st a g s 。因此s t r u t s 与w e bs e r v i c e 是密不可分的。 2 2 1w e bs e r v i c e 概述 w e bs e r v i c e 主要是为了使原来各孤立的站点之间的信息能够相互通信、共享 而提出的一种接口。w e bs e r v i c e 所使用的是i n t e m e t 上统一、开放的标准,如 h t t p 、x m l 、s o a p ( 简单对象访问协议) 、w s d l 等,所以w e bs e r v i c e 可以 在任何支持这些标准的环境( w i n d o w s ,l i n u x ) 中使用。s o a p 协议( s i m p l eo b j e c t a c c e s sp r o t o c a l ,简单对象访问协议) ,它是一个用于分散和分布式环境下网络信息 交换的基于x m l 的通讯协议。在此协议下,软件组件或应用程序能够通过标准的 h t t p 协议进行通讯。它的设计目标就是简单性和扩展性,这有助于大量异构程序 和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。 w e bs e r v i c e 技术组件是一套开放的规范,它们要么是现有的因特网标准,要 么是被广泛接受并正在通过正常步骤成为标准的规范。组件的基本部分包含 h 1 v r p 、x m l 、s o a p 、w s d l 、u d d i 。最底层是h t t p ,它是一个被广泛运用的、 类似r _ p c 的简单协议,并且是防火墙友好的。接下来,是x m l 中的通用数据表 示语言,它同样被广泛使用。s o a p 是一个基于x m l 的消息传递协议,它不确定 平台及语言。它同时支持消息传递和请求响应通信模型。与c o r b a 和d c o m 一 样,它需要一个i d l 。它所使用的w s d l 是一个基于x m l 的服务i d l ,定义了服 务接口和其实现特征。依靠开放的、被广泛采用的标准只是获得成功的第一步。 还需要确保该解决方案能提供高度的互操作性并且协议的实现容易访问。目前, 在多个流行的编程框架支持面向服务的理念中,w e bs e r v i c e 以其出色的灵活性和 安全性,被公认为是实现s o a 最好的方法。 2 2 2w e bs e r v i c e 技术 1 x 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 ) 是w 3 c 制定的文本标记语言规范,即它 是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标 识。它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结 第二章s t r u t s 软件框架和s d o 软件框架的研究 i i 构化的标记语言的句法语言。x m l 文档从根本上说是满足一定格式的字符流。一 部分字符代表文档内容,而其他的构成标记,用来表达文档内容的结构和本质。 x m l 文档的基本组成部分是“元素”、“属性”和“注释”。它是严格定义的结构化数 据,可以用来定义和描述数据:同时,它采用文本标记的形式定义各种可交换数 据结构,并且可以利用标准的网络协议进行传输。 x m l 具有的很多特性使得它非常适合作为企业间信息交换的标准格式: 可扩展性:允许用户根据自己的实际情况需要,灵活定义符合自己应用的标 签,可以自己定义诸如i t e m s 、i t e m 、产品、名称、产品代号、产地等标签。 自描述性:根据用户定义的标准名称,使用者就可以知道该标签所代表的含 义。这对于企业间信息集成是非常重要的。 平台无关性:因为x m l 文档实际上是一种文本文档,支持文本文档的系统平 台都可以对x m l 文档进行处理。 广泛的支持性:现在各大厂商都纷纷宣布对于x m l 的支持,主流的编程开发 语言都有针对x m l 语言的编程接口,使得开发x m l 应用相对比较容易。 数据的呈现和处理分离:x m l 可以保持用户界面与结构化数据的独立,用 x m l 语言编写的数据,可以借助网络传递到任何地方,只需要套用不同的样式表, 就可以以不同的方式显示并处理数据。 结构化、规范化:x m l 要求文档必须是结构化的,一个开始的标签必须对应 一个结束的标签。用户可以很方便的使用结构化的x m l 文件作为一种中介体实现 数据在两种数据库之间灵活的进行转移。 正因为这些特性,x m l 实际代表了与平台无关性和进行网络计算的趋势。 x m l 解决了在不同平台系统之间的数据结构模式的差异,使得数据层在x m l 技 术的支持下统一了起来。x m l 是w e bs e r v i c e 得以实现的技术基础,w e bs e r v i c e 所依赖的其它协议规范都是以x m l 为标准来描述和表达的。 2 s o a p s o a p ( s i m p l eo b j e c ta c c e s sp r o t o c o l ,简单对象访问协议) 是基于x m l 的,在 分布式的环境中交换信息的简单协议。s o a p 协议规范描述了有关s o a p 的消息处 理过程,并涉及到性能和安全性的问题。s o a p 本身并不定义任何应用语义,它只 是定义了一种简单的机制,通过一个模块化的封装模型和对模块中特定格式编码 的数据的重编码机制来表示应用语义。s o a p 的这项能力使得它可被很多类型的 系统用于从消息系统到r p c ( r e m o t ep r o c e d u r ec a l l ) 的延伸。s o a p 是在x m l 基础 上定义的,完全继承了x m l 的开放性和可扩展性。s o a p 使用现有基于t c p i p 的应用层协议h t t p 、s m t p 、p o p 3 等,可以获得与现有通信技术最大程度的兼 容。s o a p 的消息路径机制和可扩充的h e a d e r 和b o d y 机制又为分布式计算提供了 1 2 基于服务数据对象的数据编程简化的研究与实现 很好的支持。 3 u d d i u d d i ( u n i v e r s a ld e s c r i p t i o nd i s c o v e r ya n di n t e g r a t i o n ,统一描述、发现和集成 协议) 定义了w e bs e r v i c e 的发布和发现的方法。u d d i 规范在x m l 和s o a p 的 基础上定义了新的一层。在这一层次,u d d i 提供了一种基于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年西安航天基地公办学校高层次人才招聘(2人)考前自测高频考点模拟试题及答案详解参考
- 2025呼伦贝尔五九煤炭集团招聘26人模拟试卷及答案详解(网校专用)
- 2025年甘肃省民航航空发展有限公司职业经理人选聘模拟试卷及完整答案详解
- 2025年烟台市教育局所属事业单位卫生类岗位公开招聘工作人员模拟试卷及答案详解一套
- 2025安徽安庆望江县融媒体中心急需紧缺专业技术人员招聘2人考前自测高频考点模拟试题及1套完整答案详解
- 2025湖北咸宁市嘉鱼县鱼岳镇招聘社区工作者38人考前自测高频考点模拟试题有答案详解
- 广玉兰夹竹桃课件
- 2025年光致抗蚀剂项目合作计划书
- 2025金华浦江县国控集团选聘1名市场化人员模拟试卷附答案详解(典型题)
- 2025湖北省招募选派三支一扶高校毕业生1998人考前自测高频考点模拟试题附答案详解(典型题)
- 肺栓塞患者护理查房课件
- 合规风险管理制度
- 病毒课件教学课件
- 9月30日烈士纪念日缅怀先烈功绩弘扬先烈精神课件
- 2024年华东师大版八年级数学上册同步练习题及答案
- 数字化印花工艺智能化
- 香雪制药资本结构优化分析
- 2024年高考作文备考之“有用无用”作文导写素材及范文
- DZ∕T 0214-2020 矿产地质勘查规范 铜、铅、锌、银、镍、钼(正式版)
- 无创呼吸机通气模式介绍及临床应用课件
- MOOC 模拟电子电路实验-东南大学 中国大学慕课答案
评论
0/150
提交评论