基于Struts架构的一种业务逻辑层设计方法
- 格式:pdf
- 大小:280.05 KB
- 文档页数:2
随着J B os s 和W ebl ogi c 等应用服务器对J 2E E 的全面支持,J 2E E 正逐渐成为企业级网络应用软件的开发标准,它提供了一种在分布式环境下基于组件的设计、开发、集成、部署的企业应用系统的方法。
为了提高分布式应用系统中组件的重用能力和事务控制的灵活性,采用M VC 设计模式来分离系统的用户界面、业务逻辑及业务控制,St r ut s 体系结构就是M VC 设计模式的一种具体实现,而整个体系结构中以如何构建一个良好架构的业务逻辑层是软件开发者须重点关心的问题。
1S t rut s 体系结构St r ut s 是Apa che 组织研究开发w e b 应用软件框架开放源代码项目。
St r ut s 是M VC 设计模式的一种实现,对模型、视图和控制器提供对应的实现组件。
①控制器的作用是从客户端接受请求,选择执行相应的业务逻辑,然后把响应结果送回到客户端。
它的基本控制器组件是A ct i onSer vl et 类中的实例Se r vl e t ,实际使用Se r vl e t 是在配置文件中由一组映射(由Act i onM appi ng 类进行描述)来进行定义。
A c t i onM a ppi ng 对象实现了一个请求到一个具体的模型部分中Act i on 处理器对象之间的映射。
②St r ut s 中模型部分分为两类:系统的内部状态和改变系统状态的动作(业务逻辑)。
St r ut s 为模型部分提供了Act i on 和A c t i onFor m 对象。
Act i on 处理器对象封装了具体的处理逻辑,调用业务逻辑模块,并且把响应提交到合适的视图组件以产生响应。
A ct i onFor m B ean 对象可以通过定义属性描述客户端表单数据。
利用A c t i onFor m B e an 对象和St r ut s 提供的自定义标记库可以实现对客户端的表单数据的良好封装和支持。
通过Act i onFor m Bea n 对象实现了视图和模型之间交互。
③St r ut s 应用中的视图部分是通过JSP 技术实现的。
St r ut s 提供了自定义的标记库可以使用,通过这些自定义标记可以实现与模型部分中A c t i onFor m 的映射,完成对用户数据的封装,同时这些自定义标记还提供了模板定制等多种显示功能。
④配置文件:st r ut s.conf i g.xm l 负责系统的各个模块之间的交互。
2基于IoC 的设计方法业务逻辑层是应用软件系统业务逻辑处理集中的部分,传统的业务逻辑的设计大都是基于面向接口的思想,面向接口的设计方法大概包含三个步骤,通过这三个步骤达到了接口与实现的分离,但是这种方式不可避免地增加了工厂类的设计,这就导致了代码迅速膨胀,对于系统的后期维护非常不利。
I oC ,I nve r si on of C ont r ol ,又称之为D I ,D ependency I nj ect i on(依赖注入),就是由容器控制程序之间的关系,控制权由应用代码中转到了外部容器。
也就是组件由容器在运行是进行动态地调用。
目前,EJ B 标准已经成为了在业务逻辑层中普遍采用的框架规范,但是它具有高侵入式,增加了逻辑层与EJB 的耦合性。
而I oC 思想和J AVA 的反射机制的组合则能够剥离业务逻辑层代码与框架之间的耦合性,使得业务组件能够达到可装卸化,提高了框架的可扩展性,依照上述思想,我们制定了st r ut s 架构的原理(如图1)。
图1架构原理图在图1中,Act i onFor m 的主要功能就是为Act i on 的操作提供与客户表单相映射的数据(通常还包括对数据进行校验以及重置表单数据)。
Act i on 调用相应的B e an,对数据状态进行修改,在改变系统状态后,A c t i onFor m 则自动的回写新的数据状态并保持。
而B e a n 注入,即在运行期间由逻辑层框架依赖关系注入到组件中,也就是说,在运行期由框架读取配置文件,将其他对象的引用通过组件的提供的s et t e r 方法进行设定。
通过组件包装器,我们可以无需在编码时指定B 的实现类和属性值,通过在配置文件加以设定,就可以在运行期动态创建对象并设定其属性(依赖关系),而这无疑大大加强了系统的灵活性与扩展性。
而B e a n 库,顾名思义就是负责创建和维护Be an 实例。
主要功能包括以下几个方面:①管理业务逻辑组件的生命周期。
②Be a n 的属性值及其依赖关系(B e a n 与B e a n 之间的引用)。
③Bea n 的创建模式(是否时Si ngl et on 模式——指定类全局仅拥有唯一实例)。
④Be a n 的初始化和销毁。
下面是一个较为完整的Be a n 配置实例:<be a ns ><de sc r i pt i on>Bea n Conf i gur at i on Sam pl e</desc r i pt i on ><be an i d=“T e st A ct i on ”(1)cl ass=“co m .j m u.beans.T est B ean ”(2)si ngl et on=“t r ue ”(3)i ni t _m et hod=“i ni t ”(4)dest r oy_m et hod=“des t r oy ”(5)deponds_on=“Test M ana ger ”(6)><pr ope r t y nam e=“m es sa ge ”><val ue >H el l o</val ue>(7)</pr oper t y><pr ope r t y nam e=“des c ”><nul l /></pr oper t y><pr oper t y na m e=“dat aSour ce ”><r ef l ocal =“dat aSour ce ”/>(8)</pr oper t y></be a n><bea n i d=“dat aSour ce ”,cl as s=“com .j m u.l ogi c.J ndi D a t aSour ce ”><pr oper t y na m e =“j ndi N a m e ”><val ue>j ava:T est D at a Sour ce </val ue></pr oper t y></be a n></be a ns>说明:①i d:Ja va B ea n 在B ea n 库中的唯一标识,代码中通过B e an 库获取Java B ea n 实例时需以此作为索引名称。
②cl ass:J ava B e an 类名③si ngl et on:指定此组件是否采用单例(si ngl et on)模式,如果设为“t r ue ”,则在组件库作用范围内,只维护此组件的一个实例,代码通过组件库获得此B 实例基于St r ut s架构的一种业务逻辑层设计方法田小玲林荣霞(广东工业大学华立学院计算机工程系广东增城511325)摘要:基于M V C 模式的St r ut s 已经成为目前构建W e b 应用的重要框架。
本文简要介绍了St r ut s 的工作原理,提出了应用I o C 思想来设计s t r ut s 架构中的业务逻辑层的方法,达到了业务组件可装卸的目的,提高了软件的可复用性。
关键词:St r ut s M V C 业务逻辑层I o C 中图分类号:TP3文献标识码:A 文章编号:1672-3791(2008)06(c )-0013-02(下转5页)J av a ea n Ja va e an 1m e nt 程序,输入延时值dt 和水位,选择原始数据Log 文件,进行滞后改正,每条线的原始dat 文件被修改,另存为滞后原始数据文件,同时生成滞后原始数据日记文。
滞后数据计算过程:打开Si ngl e B e am Edi t or 程序,选择滞后原始数据Log 文件,逐条计算出数据的坐标,然后用自编的GPS 数据处理程序将坐标转换为成图软件识别的数据格式。
4.2Hypa c k 软件滞后的原理、方法通过分析Hypa c k 软件采集的原始数据(*.dat )与滞后原始数据(*.zzz)可以发现,H a pyc k 软件采集的原始数据(*.da t )的结构主要由三部分组成:差分信号段(POS),定位信息段(FI X )和回深信息段(E C)。
每段的结构主要是:差分信号段:信号标志(POS),信号时间(POSt i m er ),信号位置(POSX,POSY)。
定位信息段:定位标志(FI X ),定位时间(FI X t i m er )。
回深信息段:回深标志(E C1),回深时间(E Ct i m er ),水深(D e t eph)Ha pyc k 软件进行滞后改正的原理就是按比测的延迟值dt ,将原始采集数据中的所有差分信号段的时间延迟后(即XPOSt i m e r =PO St i m er +dt ),按每个定位标志后最早遇见的回深时间(EC t i m er )作为该点的定位时间,然后在延迟后的信号时间(X PO St i m er )中查找,看该定位时间介于哪两个信号时间中,最后按时间内插法求出定位坐标。
假设定位点K 点后的最早遇见的回深时间为ECt i m e r K,水深为EC HK,查找该时间介于延迟后的信号时间X POSt i m e r i 和XP OS t i me r i +1间,对应的信号坐标为PO SXi 、POSYi 和POSXi +1、POSYi +1,定位点K 的坐标滞后改正的公式可表示如下:XK=POSXi ×(1-P)+POSXi +1×P YK=POSYi ×(1-P)+POSYi +1×P H K =E CH K式中时间内插系数P=A bs (ECt i m e r -XPOSt i m e r i )÷Abs (XPOSt i me r i +1-X POSt i m er i )。
4.3Hai Da 软件采集数据滞后的实现Ha i da 软件采集的数据格式主要有两种:原始定位数据(L n*.da t )和原始水深数据(L n*.ss)。
Ln*.da t 文件主要记录测线的测点坐标和水深,文件信息量小,结构简单明了;Ln*.s s 文件记录了接收的差分信号的汇总,且差分信号点次的交界处是定位标志,该文件的主要结构是:N 点号D 日期T 信号时间X 坐标Y 坐标S 水深E 水面错误H 报告。