CN101694618B - 适用于ajax框架的模型层与视图层数据自动映射方法 - Google Patents
适用于ajax框架的模型层与视图层数据自动映射方法 Download PDFInfo
- Publication number
- CN101694618B CN101694618B CN 200910194972 CN200910194972A CN101694618B CN 101694618 B CN101694618 B CN 101694618B CN 200910194972 CN200910194972 CN 200910194972 CN 200910194972 A CN200910194972 A CN 200910194972A CN 101694618 B CN101694618 B CN 101694618B
- Authority
- CN
- China
- Prior art keywords
- ajax
- data
- json
- processor
- entity
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种适用于AJAX框架的模型层与视图层数据自动映射方法,该方法所涉及的硬件包括表单数据处理器、AJAX接口调用模块、对象实体处理器、WEB表单控件、实体对象、数据源,该方法的步骤包括:客户端下载WEB表单等。与现有技术相比,本发明具有复杂度低、通用性强等优点。
Description
技术领域
本发明涉及一种数据自动映射方法,尤其涉及适用于AJAX(异步JavaScript和XML)框架的模型层与视图层数据自动映射方法。
背景技术
WEB应用系统由于其快速部署的特性目前被广泛使用,一般按照MVC(MODEL层、VIEW层、CONTROLLER层)三层模型进行系统开发。其中,VIEW层一般使用HTML文档对象模型(DOM)进行数据展现与处理。HTML文档对象模型将HTML文档定义为嵌套其他元素的树型结构对象。MODEL层一般使用面向对象(OO)的编程语言,如JAVA、.NET等编程语言,使用类(classes)、对象(objects)来定义后台实体对象,进行数据的处理和持久化。
由于MODEL层与VIEW层的设计理念、开发平台(语言)的差异,不可避免的带来了VIEW层DOM对象与MODEL层实体业务对象互相转换的问题。按照传统的方式,MODEL层与VIEW层的数据交互往往需要编写大量JS脚本和服务器端脚本,其开发效率低下,而且质量无法保证。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷,提供一种复杂度低、通用性强的适用于AJAX框架的模型层与视图层数据自动映射方法。
本发明的目的可以通过以下技术方案来实现:
一种适用于AJAX框架的模型层与视图层数据自动映射方法,其特征在于,该方法所涉及的硬件包括表单数据处理器、AJAX接口调用模块、对象实体处理器、WEB表单控件、实体对象、数据源,该方法的步骤如下:
1)客户端下载WEB表单;
2)客户端向服务器端发出提交请求,此时表单数据处理器会自动捕获视图层表单控件属性信息和当前值,将这些信息封装为JSON格式;
3)表单数据处理器通过AJAX接口调用模块向服务器提交JSON格式的表单数据;
4)客户端的AJAX接口调用模块负责调用具体的第三方AJAX框架,将JSON格式的表单数据提交给服务器;
5)服务器端的AJAX接口调用模块将接收到该JSON格式的表单数据交给对象实体处理器进行解析处理;
6)对象实体处理器解析JSON格式数据,根据视图层表单对象和模型层业务对象的映射关系,查找服务器缓存区的业务实体;
7)判断是否存在实体对象,如果存在,则通过反射机制,填充对象属性;
8)如果不存在,则新生成一个业务对象,并将该对象放入缓存区;
9)通过反射机制查找对象实体中是否有符合用户请求的操作方法;
10)如果有,则执行对应的操作;
11)如果没有,则返回错误结果,操作结果(正确或错误)由对象实体处理器重新封装为JSON格式,并通过AJAX接口调用模块将JSON格式的处理结果返回给客户端;
12)客户端的AJAX接口调用模块自动接收到该JSON格式的服务器处理结果,并交给表单数据处理器进行解析;
13)表单数据处理器解析操作结果;
14)通过自定义回调函数,回填视图层WEB表单相应控件,实现WEB表单的更新。
所述的6)中的缓冲区由服务器启动时初始化或者通过惰性初始化完成所有对象实例的生成。
所述的表单数据处理器对WEB表单控件进行扩展,增加必要的自定义属性,用于反映表单和业务对象之间的关联关系。
所述的AJAX接口调用模块隐藏于具体的第三方AJAX框架中,实现客户端与服务器端之间的数据交换。
所述的对象实体处理器解析JSON格式的WEB表单数据,生成MODEL层对应的业务对象,执行相应的业务操作,并将操作结果以JSON格式返回给客户端。
与现有技术相比,本发明具有以下优点:
1、降低开发复杂度,只需要进行简单的配置,即可完成VIEW层WEB表单数据与MODEL层业务对象的自动映射,实现了WEB表单数据与后台业务对象的自动绑定与处理。使得开发工作集中在关键的业务逻辑处理上,提高了软件开发效率。
2、具有通用性,适用于多种第三方AJAX框架,可以根据不同需求,选择适当的AJAX框架进行开发。
附图说明
图1是本发明一种适用于AJAX框架的模型层与视图层数据自动映射方法的结构示意图;
图2是本发明一种适用于AJAX框架的模型层与视图层数据自动映射方法的工作流程图。
具体实施方式
以下结合具体实施例对本发明做进一步说明。
实施例
如图1、图2所示,一种适用于AJAX框架的模型层与视图层数据自动映射方法,该方法硬件包括表单数据处理器、AJAX接口调用模块、对象实体处理器、WEB表单控件、实体对象、数据源,该方法的工作流程如下:
第1步,客户端下载WEB表单;
第2步,客户端向服务器端发出提交请求,此时表单数据处理器会自动捕获视图层表单控件属性信息和当前值,将这些信息封装为JSON格式;
第3步,表单数据处理器通过AJAX接口调用模块向服务器提交JSON格式的表单数据;
第4步,客户端的AJAX接口调用模块负责调用具体的第三方AJAX框架,将JSON格式的表单数据提交给服务器;
第5步,服务器端的AJAX接口调用模块将接收到该JSON格式的表单数据交给对象实体处理器进行解析处理;
第6步,对象实体处理器解析JSON格式数据,根据视图层表单对象和模型层业务对象的映射关系,查找服务器缓存区的业务实体;
第7步,判断是否存在实体对象,如果存在,则通过反射机制,填充对象属性;
第8步,如果不存在,则新生成一个业务对象,并将该对象放入缓存区;
第9步,通过反射机制查找对象实体中是否有符合用户请求的操作方法;
第10步,如果有,则执行对应的操作;
第11步,如果没有,则返回错误结果,操作结果(正确或错误)由对象实体处理器重新封装为JSON格式,并通过AJAX接口调用模块将JSON格式的处理结果返回给客户端;
第12步,客户端的AJAX接口调用模块自动接收到该JSON格式的服务器处理结果,并交给表单数据处理器进行解析;
第13步,表单数据处理器解析操作结果;
第14步,通过自定义回调函数,回填视图层WEB表单相应控件,实现WEB表单的更新。
所述的6)中的缓冲区由服务器启动时初始化或者通过惰性初始化完成所有对象实例的生成。所述的表单数据处理器对WEB表单控件进行扩展,增加必要的自定义属性,用于反映表单和业务对象之间的关联关系。所述的AJAX接口调用模块隐藏于具体的第三方AJAX框架中,实现客户端与服务器端之间的数据交换。所述的对象实体处理器解析JSON格式的WEB表单数据,生成MODEL层对应的业务对象,执行相应的业务操作,并将操作结果以JSON格式返回给客户端。
实施例2
该方法已经被应用于中国铝业广西分公司运输生产调度系统中,该系统主要功能包括跟踪机车的行走过程,对运输过程中留下的运输数据和机车车辆行走痕迹进行实时动态跟踪和处理等。
该运输生产调度系统是基于JAVA开发的,采用DWR框架完成客户端与服务器端的数据传输。
该系统为每个WEB表单控件扩展了三个自定义属性:分组信息(关联对象名称),关联字段,类型(用于有效性验证)。表单控件包括文本框、下拉菜单、日期或其他任何面向对象的表单控件。
以下是具体的实现方式:
1、数据表单智能绑定:
自定义了三个Html组件属性,有对象ID(group属性),字段属性(field属性),数据类型(ftype属性);Html的各种表单控件,包括列表框、文本框和其他自定义输入框等,都加入了该Html组件属性。
2、JSON数据对象格式:
定义有class、method、fields、param和results子对象,分别表示对象类名、操作方法、表单数据(属性和值的键值对集合)、自定义参数和返回结果(此结果也是JSON格式)信息。
3、AJAX接口调用模块:
承担数据传输桥梁的角色。在本系统中,此模块通过调用DWR框架,实现VIEW层与MODEL层之间JSON格式数据的传输。
4、对象实体处理器:
首先,根据JSON数据的class子对象生成一个MODEL层的业务对象实例,同时将fields子对象中的属性值设置到该业务对象实例中,并调用该业务对象实例的method方法。
然后,将method方法的返回值转化成JSON格式,存储到results子对象中,并返回给客户端。
从系统的开发进度来看,使用该方法后,编程复杂度降低了很多,开发效率有很大提高。
Claims (3)
1.一种适用于AJAX框架的模型层与视图层数据自动映射方法,其特征在于,该方法所涉及的功能模块包括表单数据处理器、AJAX接口调用模块、对象实体处理器、WEB表单控件、实体对象、数据源,该方法的步骤如下:
1)客户端下载WEB表单;
2)客户端向服务器端发出提交请求,此时表单数据处理器会自动捕获视图层表单控件属性信息和当前值,将这些信息封装为JSON格式;
3)表单数据处理器通过AJAX接口调用模块向服务器提交JSON格式的表单数据;
4)客户端的AJAX接口调用模块负责调用具体的第三方AJAX框架,将JSON格式的表单数据提交给服务器;
5)服务器端的AJAX接口调用模块将接收到该JSON格式的表单数据交给对象实体处理器进行解析处理;
6)对象实体处理器解析JSON格式数据,根据视图层表单对象和模型层业务对象的映射关系,查找服务器缓存区的业务实体;
7)判断是否存在实体对象,如果存在,则通过反射机制,填充对象属性;
8)如果不存在,则新生成一个业务对象,并将该对象放入缓存区;
9)通过反射机制查找对象实体中是否有符合用户请求的操作方法;
10)如果有,则执行对应的操作;
11)如果没有,则返回错误结果,操作结果(正确或错误)由对象实体处理器重新封装为JSON格式,并通过AJAX接口调用模块将JSON格式的处理结果返回给客户端;
12)客户端的AJAX接口调用模块自动接收到该JSON格式的服务器处理结果,并交给表单数据处理器进行解析;
13)表单数据处理器解析操作结果;
14)通过自定义回调函数,回填视图层WEB表单相应控件,实现WEB表单的更新;
所述的表单数据处理器对WEB表单控件进行扩展,增加必要的自定义属性,用于反映表单和业务对象之间的关联关系;
所述的AJAX接口调用模块隐藏于具体的第三方AJAX框架中,实现客户端与服务器端之间的数据交换。
2.根据权利要求1所述的适用于AJAX框架的模型层与视图层数据自动映射方法,其特征在于,所述的步骤6)中的缓冲区由服务器启动时初始化或者通过惰性初始化完成所有对象实例的生成。
3.根据权利要求1所述的适用于AJAX框架的模型层与视图层数据自动映射方法,其特征在于,所述的对象实体处理器解析JSON格式的WEB表单数据,生成MODEL层对应的业务对象,执行相应的业务操作,并将操作结果以JSON格式返回给客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910194972 CN101694618B (zh) | 2009-09-01 | 2009-09-01 | 适用于ajax框架的模型层与视图层数据自动映射方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910194972 CN101694618B (zh) | 2009-09-01 | 2009-09-01 | 适用于ajax框架的模型层与视图层数据自动映射方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101694618A CN101694618A (zh) | 2010-04-14 |
CN101694618B true CN101694618B (zh) | 2013-03-06 |
Family
ID=42093591
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910194972 Active CN101694618B (zh) | 2009-09-01 | 2009-09-01 | 适用于ajax框架的模型层与视图层数据自动映射方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101694618B (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102571731B (zh) * | 2010-12-31 | 2014-10-22 | 德讯科技股份有限公司 | 一种面向对象的ajax框架模型系统及其处理方法 |
CN102567400B (zh) * | 2010-12-31 | 2014-09-03 | 阿里巴巴集团控股有限公司 | 一种实现Web访问的方法和Web服务器 |
CN102158482B (zh) * | 2011-03-10 | 2013-11-20 | 易程(苏州)软件股份有限公司 | 基于json数据协议的客运信息通信方法及系统 |
CN102279862A (zh) * | 2011-05-10 | 2011-12-14 | 中兴通讯股份有限公司 | 基于Ajax的数据处理装置及方法 |
CN102270217A (zh) * | 2011-06-10 | 2011-12-07 | 宇龙计算机通信科技(深圳)有限公司 | 一种信息显示方法和装置 |
CN102221999B (zh) * | 2011-06-17 | 2014-09-17 | 大唐软件技术股份有限公司 | flex表单组件的封装方法及系统 |
CN103020062A (zh) * | 2011-09-20 | 2013-04-03 | 佳都新太科技股份有限公司 | 一种基于xml rpc的前端与服务器的交互实现 |
CN102750329A (zh) * | 2012-05-30 | 2012-10-24 | 深圳证券信息有限公司 | 一种自适应数据采编方法及系统 |
CN103793384B (zh) * | 2012-10-26 | 2017-09-19 | 上海宝信软件股份有限公司 | 一种通用的客户端与服务端数据绑定的方法 |
CN103077185B (zh) * | 2012-12-18 | 2017-09-29 | 厦门雅迅网络股份有限公司 | 一种基于对象的自定义扩展信息的方法 |
CN104424338B (zh) * | 2013-09-11 | 2018-02-02 | 北大方正集团有限公司 | web系统的自动生成装置和自动生成方法 |
CN104714985B (zh) * | 2013-12-17 | 2018-07-24 | 远光软件股份有限公司 | 一种提升表单审批效率的方法及装置 |
CN104135536A (zh) * | 2014-08-15 | 2014-11-05 | 浪潮电子信息产业股份有限公司 | 一种基于json数据协议的Web管理系统数据交互方法 |
CN104267974B (zh) * | 2014-10-22 | 2018-03-30 | 大唐网络有限公司 | 业务接口的调用方法及装置 |
CN104468785A (zh) * | 2014-12-08 | 2015-03-25 | 上海斐讯数据通信技术有限公司 | 电子设备、服务器设备、数据请求提交方法及处理方法 |
CN104994122B (zh) * | 2015-05-12 | 2019-02-19 | 深圳市微阳信息技术有限公司 | 一种基于json数据协议的业务通讯方法 |
CN106293688B (zh) * | 2015-06-26 | 2019-09-06 | 阿里巴巴集团控股有限公司 | 一种网页请求的处理方法、装置和系统 |
US10176336B2 (en) * | 2015-07-27 | 2019-01-08 | Microsoft Technology Licensing, Llc | Automated data transfer from mobile application silos to authorized third-party applications |
CN106127573B (zh) * | 2016-06-17 | 2019-07-16 | 深圳市雁联计算系统有限公司 | 一种轻型化运营系统及方法 |
CN107526755B (zh) * | 2016-09-27 | 2020-11-03 | 腾讯科技(深圳)有限公司 | 数据的处理方法及装置 |
CN106846431B (zh) * | 2016-12-27 | 2020-12-29 | 中国电子科技网络信息安全有限公司 | 一种支持多表现形式的统一Web图形绘制系统 |
CN107102859A (zh) * | 2017-04-20 | 2017-08-29 | 千寻位置网络有限公司 | 自动填充Web表单的方法 |
CN107133041B (zh) * | 2017-05-02 | 2019-09-06 | 武汉斗鱼网络科技有限公司 | 数据通知方法及装置 |
CN107480223B (zh) * | 2017-08-02 | 2020-12-01 | 北京五八信息技术有限公司 | 一种搜索方法、装置及存储介质 |
CN110020319A (zh) * | 2017-12-28 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 视图切换方法和装置 |
CN108322353A (zh) * | 2018-03-27 | 2018-07-24 | 多彩贵州印象网络传媒股份有限公司 | 一种基于自动生成操作界面的业务处理系统 |
CN109582481B (zh) * | 2019-01-10 | 2022-02-18 | 北京城市网邻信息技术有限公司 | 调用结果的传输方法、装置、设备及存储介质 |
CN112380192B (zh) * | 2020-12-03 | 2024-02-09 | 广州海量数据库技术有限公司 | 数据库中面向对象框架的实现方法及系统 |
CN113609826B (zh) * | 2021-07-14 | 2024-01-09 | 远景智能国际私人投资有限公司 | 表单处理方法及装置 |
CN114118031B (zh) * | 2021-11-17 | 2023-08-29 | 之江实验室 | 一种端到端的抹平表单差异性的方法 |
-
2009
- 2009-09-01 CN CN 200910194972 patent/CN101694618B/zh active Active
Non-Patent Citations (4)
Title |
---|
刘建海等.基于Ajax的Web应用框架的研究及实践.《中国优秀硕士论文电子期刊网》.2008,正文第29页第3段、第30页第2段、第44页第4段. * |
宋瑜辉等.基于两种web开发模式构件ajax应用的研究.《计算机技术与发展》.2009,第19卷(第5期),第86-89页. * |
李成严等.基于开源技术的web应用架构的研究.《计算机技术与发展》.2009,第19卷(第8期),第27-30页. * |
王沛等.基于总线模型和Json的Ajax安全开发模型.《计算机工程与设计》.2008,第29卷(第3期),第586-589页. * |
Also Published As
Publication number | Publication date |
---|---|
CN101694618A (zh) | 2010-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101694618B (zh) | 适用于ajax框架的模型层与视图层数据自动映射方法 | |
CN103383645B (zh) | 代码生成方法及系统 | |
WO2023071075A1 (zh) | 机器学习模型自动化生产线构建方法及系统 | |
CN102915375B (zh) | 一种基于布局分区的网页加载方法 | |
CN110929039B (zh) | 数据处理方法、装置、设备及存储介质 | |
KR100795765B1 (ko) | 사용자 인터페이스와 데이터 컴포넌트 간의 지능형 맵핑을이용한 무선 애플리케이션 구축 시스템 및 방법 | |
US7685604B2 (en) | Business process execution language (BPEL) application generator for legacy interfaces | |
CN107103462B (zh) | 一种银行跨境汇款快照数据的处理方法和装置 | |
CN101122921B (zh) | 基于ajax与html标记形成树形显示结构的方法 | |
CN103107895B (zh) | 一种基于配置解析应用规则的计费业务规则引擎组合系统及其方法 | |
CN107203473A (zh) | 自动扩展接口测试用例的自动化测试系统与方法 | |
CN110221815B (zh) | 一种基于本体的控制软件模型的自动生成方法 | |
CN104050261A (zh) | 基于Storm的可变逻辑的通用数据处理系统及方法 | |
CN111125496B (zh) | 一种价格查询方法、装置及系统 | |
US10678521B1 (en) | System for image segmentation, transformation and user interface component construction | |
CN109614093B (zh) | 可视化智能合约系统以及智能合约的处理方法 | |
US8230357B2 (en) | Visually processing instance data | |
CN109766196A (zh) | 一种任务调度方法、装置及设备 | |
CN112069196B (zh) | 基于数据库的数据处理方法、装置、设备及可读存储介质 | |
CN105404514A (zh) | JavaScript渲染方法和装置 | |
CN109361628A (zh) | 报文组装方法、装置、计算机设备和存储介质 | |
CN114594927A (zh) | 低代码开发方法、装置、系统、服务器及存储介质 | |
CN101751332B (zh) | 工作流中间件的流程仿真方法、装置及系统 | |
CN114201156B (zh) | 接入方法、装置、电子设备及计算机存储介质 | |
CN104834715A (zh) | 一种基于部件和容器的网站生成方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |