验证平台开发说明_第1页
验证平台开发说明_第2页
验证平台开发说明_第3页
验证平台开发说明_第4页
验证平台开发说明_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、验证平台开发说明1验证平台概述按照计划,到2011年10月底,新平台预研项目给出一个功能最小化的开发环境,简称 验证平台,现对这个验证平台的使用进行说明。1.1平台结构预想平台的分层结构为:尸持久化/数据服务、JPA对象映射存储服务底层扩展自定义数据访问层访问工具数据 集平台已明确区分数据服务层和业务服务层。数据服务层借助JPA技术实现Java对象 与关系数据库的映射(ORM);平台对数据服务层进行了简单的封装,提供了一个基础 的DAO类和一个工具类,可对简单实体对象进行增删改、分页查询、自定义条件查询 等操作,复杂的实体对象操作需要开发人员扩展基础DAO类自己实现。业务服务层是相对独立的,它

2、向下依赖数据服务层,对上层的接入层提供业务支撑, 不依赖于某种界面实现技术。由于业务服务和具体的业务紧密相关,平台没有提供基础 类,只是要求每个业务服务必须定义接口,其实现类作为spring的bean,这样方便进 行事务控制和接入层使用。接入层实际上就是应用的展示层,可以实现多种展现技术的接入。平台采用 STRUTS2作为WEB框架、以JSP的方式进行展现。由于进行展现的数据的类型不固定, 平台只能进行简单的封装,对页面和服务器的交互流程进行控制,对业务服务的调用等 业务逻辑都需要开发人员自己实现。2二次开发说明2.1项目源文件组织结构平台的底层支持包分为四个:JPA支持的common.jar

3、、框架的framework.jar、STRUTS2 接入的s2ui.jar和基于STRUTS2的标签s2tag.jar,这些包将伴随着框架添加到应用的classpath 中。框架的包层次参考下图:白矽NAPj j 0辱 se白.容 highsoft:common界 entily由-田 frameworkEntityBeanJava也-岛 framewo-rk(j)-0 bizservice: : :由-引 ca chad ata亩-由 con-f-fj datas-ervicej j j田-任! eKception由-出init亩由 rncdelI I I 身丧uii iii 也-研 stru

4、ts| |中册 actionE-Fj- dispatcher i-S filterE-P0- interceptorsmodelweb action j-JT E ea n Acti d n Uti IJ a va- lXj stru tw-frs m ewo-rk.xm I:由-由 utilE-由 view! 0-& IM ETA-INFJRE System Library jdkl5O_O4由# J2EE 1.4 Librariesjdoc|lib:r=JPA支持实体及元数据文件存放处,按 模块划分子包实体的基类业务逻辑数据服务|接入层STRUTS2接入层 基础action框架使用的act

5、ion2.2数据服务层数据服务层默认提供一个持久化单元;支持基于实体、JPQL的分页、条件查询、更新等基础操作,暂不提供基于JDBC的传统SQL操作,但允许使用JPA中的nativeSql。实体通 过注释标注,平台提供工具把库表映射为实体,并产生元数据文件。数据服务器层提供的类有:基础类功能IDAO 和 BaseDAO 类IDAO是数据DAO通用接口,BaseDAO就是它的实现类,可执行 基于实体、JPQL的增删改、条件查询、分页查询的功能。BaseDAO 是一个抽象类,必须扩展才能使用。开发者自己实现的DAO,可 用Spring进行管理。JPAUtil为简化数据层的开发,平台提供通用的数据操

6、作工具类JPAUtil, 其利用泛型技术,可支持绝大多数基于实体、JPQL的数据操作。 它是一个工具类,直接使用即可。SequenceUtil序号生成器的工具类,用于为实体、业务生成各类的序列号。EntityMetaDataUtil获取实体元数据的工具类,每个实体都有个xml文件描述元数据 信息,这个工具类根据实体名称获取元数据对象。EntityMetaData实体的元数据定义模型,记录实体的元数据、Java类,主键策略 等。EntityFieldMetaData记录实体属性列的元数据,包括库表字段,类型,长度,精度, 扩展属性,导出属性等。QueryParamJPA操作时使用的参数对象。Qu

7、eryParamListJPA操作时使用的参数对象列表辅助构建器。EntityBean实体的基础bean类,所有实体都要从它扩展。2.3通用数据模型平台还提供了两个通用模型类,当页面展示的数据不是实体时,需要用到这两个类。类说明FieldMetaData记录数据对象扩展属性的基础类。BaseBean页面展示数据类型的基类。2.4接入层struts2基础类struts2不需要form装载数据,数据都直接放在action中,所以struts2的开发人员只需 要实现action和jsp。目前平台只提供了一个基础action,即BasicAction,使用时,需要用 一个页面展示多条数据,另一个页面编

8、辑数据,而且一次只能编辑一条数据。为了配合页面展示数据的需要,平台封装了一个DataWrap类,对页面数据进行了包装, 它相当于一个包裹,对数据列表、行号、单条数据、固定查询条件和分页对象进行了打包。 action中使用DataWrap作为展示数据属性,动态表格使用它的dataList属性,Freeform使用data属性,这两个属性的值没有关联,action需要自己对他们分别维护。由于DataWrap采 用了泛型技术,子类必须提供具体类型,而且要体现在get方法中,BasicAction根据这个类型处理页面上传的数据,否则数据无法上传。BasicAction除了对一个默认的DataWrap进

9、行支持外,对多DataWrap展示也提供了支 持,子类需要重载getExtendDataWrapName方法,以提供扩展的DataWrap属性名称,扩展的DataWrap属性都由子类自己定义。下面我们详细看一下BasicAction提供的方法。方法功能init进彳丁页面数据的初始化,根据retrieveAfterInit属性值决定是否检 索数据。initTreat子类在这里进行分页信息设置等。retrieve查询方法,只是简单的返回input”。子类重载时要为默认的 dataWrap和扩展的dataWrap设置数据。update更新方法,只是简单的调用了 retrieve方法,让页面返回到列表

10、 页面。更新操作的业务逻辑需要子类自己实现。add添加新数据的方法,只是简单的返回edit”,让页面转到单条数据 编辑页面。子类需要创建新的数据对象。edit编辑数据方法,只是简单的返回edit”。子类需要自己设置维护的 数据,可利用DataWrap的rowIndex属性。remove删除数据的方法,只是简单的调用了 retrieve方法。子类需要自 己确定要删除的数据并调用业务服务进行删除。toExcel把页面显示的数据导出到excel,需要有兀数据提供标题和数据类 型等信息。如果数据是实体则自动获取实体的兀数据,否则需要 子类必须实现getCustomMetaData方法以提供兀数据信息。

11、有多个 数据集则导出currentDataWrap表示 的DataWrap。toExcelFull同toExcel,区别是导出的数据是子类通过getAllDataList()方法提供的数据。getAllDataList需要子类实现的方法,在toExcelFull使用,提供导出的数据集合。getSelectedDataWrap计算currentDataWrap对应DataWrap对象,直接使用即可getMetaData获取currentDataWrap对应的DataWrap列1表数据的兀素的兀数据, 供导出时使用。如果元素是实体,那么直接找出实体属性的元数 据,否则需要子类实现getCustom

12、MetaData提供。getCustomMetaDataDataWrap元素类型不是实体时子类重载这个方法提供元数据。export()导出时调用这个方法弹出选择导出列页面。子类不需要重载。getExcelFileName子类重载这个方法设置导出exce l时显示的文件名称。getPdfFileName子类重载这个方法设置导出pdf时显示的文件名称。getDataWrap返回默认的DataWrap。DataWrap是个泛型类,子类实现时必须指 明具体类型。getPropertysetProperty用于页面传输数据用的Map。getCurrentDataWrapsetCurrentDataWra

13、p页面中展示多个DataWrap时,用于记录当前操作的DataWrap,值 为对应DataWrap的属性名称。getExtendDataWrapName页面中展示多个DataWrap时,用这个方法说明扩展的DataWrap对 应的属性名称。prepare处理页面的上传数据,在STRUTS2的Preparable中调用,子类如果 重载,必须调用父类的方法。对action的补充说明:采用注释的机制管理Struts2,不需要维护struts2的XML配置文件。2.action由Spring进行管理,Action中使用的服务对象可以按照bean名称实现自动注入, action中声明的服务对象属性名称必

14、须是服务对象的spring bean名称。2.5校验WEB程序的校验分服务端校验和客户端校验两部分,STRUTS2对服务端校验支持的很好, 应用程序如果需要直接使用即可,方式有action重载validate方法和书写校验配置文件、使 用校验拦截器。这里就不详细说明了。下面重点说明客户端校验,其实STRUTS2对客户端 校验也有支持,不过有很多限制,经过比较平台采用了 jquery的客户端校验框架。平台在 它的基础上做了封装,开发时只需在标签上设置校验属性即可,现在Freeform标签的列已 经支持。由于框架目前无法对操作状态进行记录,动态表格的全屏编辑模式无法发挥作用, 所以未提供动态表格的

15、校验功能。这些标签中和校验相关的属性有:属性说明accept要求的文件扩展名称。equalto要求兀素值和另一个元素的值相同,如设置密码需要重复输入一次,重 复输入的密码必须和第一次输入的密码相同。maxlength可输入字符的最大长度。minlength可输入字符的最小长度。maxvalue可输入的最大数值。minvalue可输入的最小数值。range可输入的值范围,如0,13,要求只能输入0到13直接的数字。rangelength可输入的字符长度范围,如2,6,要求最少输入2个字符,最大6个字 符。regexp正则表示式。regexpmessage正则表达式的规则说明。remote请求远程

16、资源进行合法性检查,如:check-email.do。required是否必需输入,true或false。validator自定义的校验规则,开发人员需要使用jquery的jQuery.validator.addMethod方法定义好校验规则,如:jQuery.validator.addMethod(domain, function(value, element) (return this.optional(element) |/Ahttp:VV/.test(value);, Please specify the correct domain for your documents);Valid

17、ator 的值就是这里 jQuery.validator.addMethod 的第一个参数 domain。validatortypejquery 内置的校验类型,有:email、date、datelSO、number、number、 numberDE、digits、creditcardo2.6关于单元测试单元测试,可以让测试流程变得简单高效,同时更好的保证代码质量。WEB项目执行 单元测试的最大问题是无法脱离应用服务器。平台对单元测试进行了探索和试验,发现 spring对此提供了支持,只要有spring环境,就可以使用junit进行单元测试。Junit是一个 很小测试工具,但是由于它的精巧设计

18、,让测试变得简单,特别是Junit从版本4开始已经 支持通过注解来定义测试用例,使测试更加方便。推荐做法为:新建一个工程作为测试工程,新建一个工程让程序结构清晰,测试代码不会混淆业 务代码。原有工程和源码都要链到测试工程下,注意各个包也需要链接过来。然后将测试包加入到classpath。测试需要的包有:spring-test.jarjunit4.4.jarspring-mock-2.0.8.jarspring-test-2.5.6.jarstruts2-junit-plugin-2.2.3.jarstruts-testng-plugin-2.2.3jartestng-5.1.jarDAO和Service只需要在Sprin

温馨提示

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

最新文档

评论

0/150

提交评论