首页 / 数据校验系统和数据校验方法

数据校验系统和数据校验方法有效专利 发明

技术领域

[0001] 本发明涉及数据校验领域,具体而言,涉及一种数据校验系统和一种数据校验方法。

相关背景技术

[0002] 在WEB应用开发中,当用户在客户端通过网络页面向服务端提交数据的时候,为了保证数据的完整性和易用性,客户端需要对用户输入的数据进行校验,客户端的校验方法一般用JavaScript完成。但是,客户端的校验是不可靠的,主流浏览器都可以禁止JavaScript的运行,因此客户端校验不能代替服务端校验。为了安全起见,并充分保证数据的完整性,该数据需要在服务端作同样的校验,一般来说,服务端的校验采用JAVA或.NET实现。当然,如果仅仅考虑数据的完整性,服务端的校验是足够的。但是,如果没有客户端校验,所有的校验实在服务端完成,每个用户的输入校验需要客户端与服务端往复交互一次,一方面增加了服务端的载荷,另一方面也增加了校验响应时间,影响了用户体验。
[0003] 考虑到在网络应用中数据完整性和良好用户体验,在常规的实现中,同样的验证逻辑需要在客户端通过JavaScript和服务端通过JAVA或.NET分别予以实现,这种实现方式一方面实现工作量大,另一方面也很容易造成服务端和客户端实现逻辑不一致,加大了开发和维护的难度,导致网络应用的可拓展性差。
[0004] 因此,需要一种新的数据校验技术,通过采用统一的校验规则进行数据校验,降低开发和维护的复杂度与工作量,增强网络应用的可拓展性。

具体实施方式

[0030] 为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
[0031] 在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
[0032] 图1示出了根据本发明的实施例的数据校验系统的框图。
[0033] 如图1所示,根据本发明的实施例的数据校验系统100包括:加载单元102,用于将校验规则库加载至服务器并缓存至内存中;获取单元104,用于在服务器接收到客户端的数据后,从校验规则库中获取数据对应的窗体的校验规则,以及在服务器接收到客户端的页面请求后,从校验规则库中获取所请求页面包含的窗体的校验规则;校验单元106,用于按数据对应的窗体的校验规则对数据进行校验,以及按照校验脚本对客户端的数据进行校验;脚本生成单元108,用于按所请求页面包含的窗口的校验规则生成校验脚本并发送至客户端。
[0034] 在页面生成的过程中,服务端按照相应的校验规则生成客户端校验脚本并发送至客户端,客户端先按照该校验脚本对客户端的数据进行校验,然后将数据发送到服务端;当服务器接收到客户端的数据后,能够从校验规则库中获取相应的校验规则对该数据进行校验。通过从同一个校验规则库中获取校验规则对数据进行校验,使服务器和客户端对数据的校验规则得到统一,一方面减少了数据校验的工作量,另一方面保证了服务器和客户端数据校验逻辑的一致性,从而降低了网络开发和维护的难度,加大了网络应用的可拓展性。
[0035] 优选地,根据本发明的实施例的数据校验系统100还包括:解析单元110,用于根据服务端实现校验所采用技术的不同,通过相应的解析器解析数据对应的窗体的校验规则,以及根据客户端实现校验所采用技术的不同,通过相应的解析器解析所请求页面包含的窗口的校验规则。
[0036] 同样的校验逻辑在服务端和客户端的校验方式不同,在客户端是通过浏览器调用JavaScript进行校验,而在服务端是调用服务器中的验证器进行校验。并且服务端有不同的校验方式,具体包括Java和.NET技术,不同的校验方式都能实现相同的校验规则,因此根据不同的校验方式设置相应的校验规则解析器,可以使不同的校验方式都能使用相同的校验规则。
[0037] 优选地,加载单元102用于,根据预设的地域、行业和/或客户信息,选择相应的校验规则库加载至服务器。
[0038] 不同地域、行业和/或客户所使用的校验规则不同,例如:在ERP产品中的地址输入页面中,需要对邮政编码进行校验,中国的邮政编码是六位数字,而美国的是五位数字,加拿大的却是六位数字、字母混合,不同的国家或地域验证规则可能是不同的。因此需要选择选择相应的校验规则库加载至服务器以进行相应的校验。
[0039] 优选地,根据本发明的实施例的数据校验系统100还可以包括:规则生成单元112,用于生成不同的基础校验规则,使用基础校验规则,组合出不同的窗体校验规则,并存储到校验规则库中。
[0040] 基础校验规则是抽象最小规则的集合,是面向分析层面,而窗体校验规则具体应用于窗体的校验逻辑,不同的网络应用有不同的窗体集合及窗体校验逻辑,窗体校验逻辑是组合基础规则库中的校验规则,是面向应用层面。
[0041] 通过生成多种基础校验规则,在对具体的窗口进行校验时,可以调用基础校验规则并进行组合,以对窗口进行校验。由于在校验前已经生成了多种基础校验规则,在对窗口进行校验时,就无需重新获取规则进行校验,只需要将基础校验规则进行组合即可,简化了窗体校验的过程。
[0042] 优选地,根据本发明的实施例的数据校验系统100还可以包括:判断单元114,用于判断服务器的校验是否成功,若成功,向客户端返回校验成功信息,若失败,则返回校验失败信息。
[0043] 图2示出了根据本发明的实施例的数据校验方法的流程图。
[0044] 如图2所示,根据本发明的实施例的数据校验方法包括:步骤202,将校验规则库加载至服务器并缓存至内存中;步骤204,在服务器接收到客户端的数据后,从校验规则库中获取数据对应的窗体的校验规则,并按数据对应的窗体的校验规则对数据进行校验;步骤206,在服务器接收到客户端的页面请求后,从校验规则库中获取所请求页面包含的窗体的校验规则,并按所请求页面包含的窗口的校验规则生成校验脚本,发送至客户端以对客户端的数据进行校验。
[0045] 当服务器接收到客户端的数据后,能够从校验规则库中获取相应的校验规则对该数据进行校验,并且能够将相应的校验规则生成校验脚本发送至客户端,然后客户端可以按照该校验脚本对客户端的数据进行校验。通过从同一个校验规则库中获取校验规则对数据进行校验,使服务器和客户端对数据的校验规则得到统一,一方面减少了数据校验的工作量,另一方面保证了服务器和客户端数据校验逻辑的一致性,从而降低了网络开发和维护的难度,加大了网络应用的可拓展性。
[0046] 优选地,步骤204还可以包括:根据服务器实现校验所采用技术的不同,通过相应的解析器解析数据对应的窗体的校验规则;步骤206还包括:根据客户端实现校验所采用技术的不同,通过相应的解析器解析所请求页面包含的窗口的校验规则。
[0047] 同样的校验逻辑在服务端和客户端的校验方式不同,在客户端是通过浏览器调用JavaScript进行校验,而在服务端是调用服务器中的验证器进行校验。并且服务端有不同的校验方式,具体包括Java和.NET技术,不同的校验方式都能实现相同的校验规则,因此根据不同的校验方式设置相应的校验规则解析器,可以使不同的校验方式都能使用相同的校验规则。
[0048] 优选地,步骤202包括:根据预设的地域、行业和/或客户信息,选择相应的校验规则库进行加载至服务器。
[0049] 不同地域、行业和/或客户所使用的校验规则不同,例如:在ERP产品中的地址输入页面中,需要对邮政编码进行校验,中国的邮政编码是六位数字,而美国的是五位数字,加拿大的却是六位数字、字母混合,不同的国家或地域验证规则可能是不同的。因此需要选择选择相应的校验规则库加载至服务器以进行相应的校验。
[0050] 优选地,在步骤202之前,还可以包括:生成不同的基础校验规则,使用基础校验规则,组合出不同的窗体校验规则,并存储到校验规则库中。
[0051] 基础校验规则是抽象最小规则的集合,是面向分析层面,而窗体校验规则具体应用于窗体的校验逻辑,不同的网络应用有不同的窗体集合及窗体校验逻辑,窗体校验逻辑是组合基础规则库中的校验规则,是面向应用层面。
[0052] 通过生成多种基础校验规则,在对具体的窗口进行校验时,可以调用基础校验规则并进行组合,以对窗口进行校验。由于在校验前已经生成了多种基础校验规则,在对窗口进行校验时,就无需重新获取规则进行校验,只需要将基础校验规则进行组合即可,简化了窗体校验的过程。
[0053] 优选地,步骤204还可以包括:判断服务器的校验是否成功,若成功,向客户端返回校验成功信息,若失败,则返回校验失败信息。
[0054] 图3示出了根据本发明的实施例的数据校验系统的结构示意图。
[0055] 如图3所示,根据本发明的实施例的数据校验系统可以分为三个部分,即规则定义层302、规则解析层303和规则应用层306。
[0056] 规则定义层302负责定义抽象的校验规则,校验规则与实现无关,可以采用文本文件进行定义。
[0057] 规则解析层304是基于规则定义层302定义的校验规则在具体的平台中的解析实现,该解析与具体的实现方式相关,JAVA平台和.NET平台有各自独立的解析实现。
[0058] 规则应用层306是通过读取窗体规则库322中的窗体规则给具体的窗体予以校验,对于网络服务端316的检验,依次调用窗体所包含的校验器对窗体进行校验。对客户端326的校验,JavaScript校验脚本引擎346通过窗体规则库322以及JavaScript规则校验库324驱动生成客户端326的JavaScript校验脚本356,该脚本在客户端326的浏览器执行完成客户端校验。
[0059] 通过三层结构的相互配合,共同完成网络统一校验规则的服务端316和客户端326的校验。
[0060] 规则定义层302完成抽象规则的定义。从应用层面分析,窗体或页面的校验千差万别,不同的业务、不同的行业、不同的国家可能校验规则不同,但是基本的校验规则大部分是相同的,例如必输入项校验、email格式校验、数字校验、日期格式校验、URL校验等,对于窗体的校验实际是这些基本校验规则的组合。因此,在规则定义层302的规则库312可以划分为基础规则库332和与应用相关的窗体规则库322。基础规则库332负责定义基本的校验规则,窗体规则库322通过组合基础规则库332中的基础规则定义具体应用中窗体的校验规则。
[0061] 规则定义仅仅描述抽象的规则,与具体实现无关。可以用文本文件予以描述,一般采用XML文件定义规则库312,一方面可以很好地将规则定义结构化,并且能够很好集成JAVA或.NET平台。
[0062] 基础规则库322定义基本的校验规则,具体可以分为通用规则库3322和定制规则库3324。
[0063] 有些校验规则是被各个应用普遍使用,例如必输入项校验、email格式校验、数字校验、日期格式校验、URL校验、邮政编码校验等,可以将这些规则放入通用规则库3322;有些规则校验只在某个具体应用中使用,可以由开发者自己拓展定义,并将该类规则放入定制规则库3324。通用规则能在被多个应用调用,满足软件开发的重用性,而定制规则满足开发中的校验规则的可拓展性。
[0064] 在校验过程中,分析具体应用的领域,识别、抽取通用校验规则,并在通用规则库3322中予以定义。通用规则库3322可以包含如下规则:必输项校验、数字及格式校验、字符及格式校验、日期及格式校验、邮政编码校验、Email格式校验、URL格式校验、IP格式校验、数字比较校验。
[0065] 当然,不同的应用领域有不同的应用场景,可以依据具体的应用场景抽取通用规则并加入通用规则库3322。
[0066] 不同的应用有不同的应用场景,不同的应用场景又有不同的校验规则。对于与应用相关且在通用规则库3322没有覆盖的规则,需要在定制规则库3324中定义,开发人员可以基于规则的拓展模板定制规则。从规则的定义和实现本身来讲,通用规则和定制规则定义和实现的方式相同,只是有不同的应用范围。
[0067] 图4示出了根据本发明的实施例的窗体规则关系示意图。
[0068] 如图4所示,在如图3所示的基础规则库332中定义基本的校验规则(包括通用规则和定制规则),是抽象最小规则集合,是面向分析层面。而如图3所示的窗体规则库322是定义具体应用中窗体的校验逻辑,不同的应用有不同的窗体集合及窗体校验逻辑,窗体校验逻辑是组合基础规则库332中的校验规则,是面向应用层面。
[0069] 不同的行业、不同的地域可以定义不同的校验窗体集合,通过继承、重载的方式为不同行业、不同应用定制窗体校验逻辑。
[0070] 在水平(或标准)实现中定义通用的窗体规则库322,这些窗体规则库322是不同行业和地域所普遍公用的校验规则。在地域拓展层,可以对不同地域中与水平层校验规则不一样的窗体规则进行定制;同样在行业拓展层和客户定制层,也可以定制行业或客户所特有的验证规则。
[0071] 图5示出了根据本发明的实施例的服务端校验器的示意图。
[0072] 如图5所示,服务端规则校验可以通过定义通用的校验接口502统一校验规则的校验实现方式,而如图3所示的校验器336的功能即相当于校验接口502,基于该接口实现的具体的业务规则校验,通用规则校验类504和定制规则校验类506都通过统一的校验接口5002继承,实现具体规则校验。具体的校验实现方式,可以通过采用Java或.NET实现。校验器能够接受校验的目标、校验参数等,满足各种不同场景的需要。
[0073] 如图3所示的规则库312中定义的规则是抽象的规则校验逻辑,与具体实现无关,但是,同样的校验规则,在服务端316和客户端326校验的方式不同,在客户端326是通过浏览器调用JavaScript进行校验,而在服务端316是在应用服务器上调用服务端316的校验器进行校验,并且服务端316有不同的校验实现技术,包括Java和.NET技术,不同的校验实现技术都能实现相同的校验规则,因此需要为不同的技术提供相应的解析器。规则解析层面与实现相关,客户端校验与服务端316校验方式不同,校验实现方式也不同。
[0074] 客户端326校验是客户端浏览器解释执行JavaScript执行客户端校验,其中,JavaScript是一种解释脚本语言,不同的浏览器有不同的支持方式,有时同一段JavaScript脚本在不同的浏览器执行结果不同,甚至不能在某些浏览器中运行。需要为基础规则库332中定义的规则统一提供JavaScript客户端校验实现。该JavaScript实现可以由如图3所示的JavaScript校验脚本引擎346推向客户端页面。
[0075] 图6示出了根据本发明的实施例的服务端校验的流程图。
[0076] 如图6所示,根据本发明的实施例的服务端校验过程包括:
[0077] 步骤602,在服务器启动时,根据所处地域,所用行业和相应客户将相应的窗体规则库加载至服务器,并缓存至内存中;
[0078] 步骤604,接受客户端发送的窗体数据;
[0079] 步骤606,解析目标窗体的校验规则;
[0080] 步骤608,根据目标窗体的校验规则,从窗体规则库中依次调用相应的校验规则进行校验;
[0081] 步骤610,判断对窗体的校验是否成功;
[0082] 步骤612,若成功,则向客户端返回校验成功信息;
[0083] 步骤614,若失败,则向客户端返回校验失败信息;
[0084] 网络应用程序依据校验成功或校验失败的信息执行相应的业务操作。
[0085] 图7示出了根据本发明的实施例的客户端校验的流程图。
[0086] 如图7所示,根据本发明的实施例的客户端校验过程包括:
[0087] 步骤702,在服务器启动时,根据所处地域,所用行业和相应客户将相应的窗体规则库加载至服务器,并缓存至内存中;
[0088] 步骤704,服务器接收用户请求页面;
[0089] 步骤706,服务器根据请求页面解析相应的窗体的校验规则;
[0090] 步骤708,服务器从窗体规则库中获取相应的窗体校验规则,并通过JavaScript脚本验证引擎生成JavaScript脚本;
[0091] 步骤710,服务器将JavaScript脚本与请求页面脚本返回至客户端,在客户端由浏览器调用JavaScript脚本执行客户端验证。
[0092] 以上结合附图详细说明了本发明的技术方案,考虑到相关技术中,数据校验在客户端和服务端采用不同的实现方式进行,导致校验工作量较大,而且容易造成服务端和客户端实现逻辑不一致,加大了开发和维护的难度,导致网络应用的可拓展性差。通过本发明的技术方案,能够采用统一的校验规则进行数据校验,降低开发和维护的复杂度与工作量,增强网络应用的可拓展性。
[0093] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页 第1页 第2页 第3页