CN110765422A - 一种参数校验方法和装置 - Google Patents

一种参数校验方法和装置 Download PDF

Info

Publication number
CN110765422A
CN110765422A CN201810825281.2A CN201810825281A CN110765422A CN 110765422 A CN110765422 A CN 110765422A CN 201810825281 A CN201810825281 A CN 201810825281A CN 110765422 A CN110765422 A CN 110765422A
Authority
CN
China
Prior art keywords
abstract
service
fields
parameter
business
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.)
Pending
Application number
CN201810825281.2A
Other languages
English (en)
Inventor
刘小云
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201810825281.2A priority Critical patent/CN110765422A/zh
Publication of CN110765422A publication Critical patent/CN110765422A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种参数校验方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:通过预定义的抽象业务对象接收业务逻辑的输入参数;在所述业务逻辑执行之前通过切面拦截所述业务逻辑,并在所述业务逻辑的方法参数包括所述抽象业务对象时,获取所述输入参数的待校验字段列表;按照与所述抽象业务对象对应的参数校验规则,校验所述待校验字段列表中的各字段,以得到所述业务逻辑的输入参数校验结果。该实施方式使得参数校验逻辑不侵入业务代码,参数校验逻辑和业务逻辑之间低耦合,且开发通用性、可复用性、可扩展性好,简化开发成本和参数校验的工作量。

Description

一种参数校验方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种参数校验方法和装置。
背景技术
JAVA应用程序的开发中,系统需要从与用户的交互获取用户提交的输入参数,这样不得不面临两种异常情况:第一种是参数缺失;第二种是参数值不合法。当追求好的用户体验和系统健壮性时不得不进行参数校验,从而将参数不合法时终端业务处理并且将原因告知系统的用户。常用的处理异常方式大致分为两种:一是细处理,即在业务逻辑内部进行参数校验;二是未处理(参数的缺失或参数不合法会浪费服务端资源,甚至可能导致程序的崩溃)。
现有的参数校验方案(上述的细处理)在业务逻辑内部进行参数校验,参数校验逻辑需要侵入业务代码,且在系统庞大、业务繁多时,参数校验工作繁琐,扩展性差,由于业务功能的差异性参数校验逻辑很难公用。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
现有的参数校验方案需要侵入业务代码,且参数校验工作繁琐,扩展性差。
发明内容
有鉴于此,本发明实施例提供一种参数校验方法和装置,使得参数校验逻辑不侵入业务代码,参数校验逻辑和业务逻辑之间低耦合,且开发通用性、可复用性、可扩展性好,简化开发成本和参数校验的工作量。
为实现上述目的,根据本发明实施例的一个方面,提供了一种参数校验方法。
一种参数校验方法,包括:通过预定义的抽象业务对象接收业务逻辑的输入参数;在所述业务逻辑执行之前通过切面拦截所述业务逻辑,并在所述业务逻辑的方法参数包括所述抽象业务对象时,获取所述输入参数的待校验字段列表;按照与所述抽象业务对象对应的参数校验规则,校验所述待校验字段列表中的各字段,以得到所述业务逻辑的输入参数校验结果。
可选地,通过预定义的抽象业务对象接收业务逻辑的输入参数的步骤之前,包括:定义抽象业务基类,所述抽象业务基类是所述抽象业务对象所属子类的父类;其中,所述抽象业务基类包括判断参数是否合法的业务方法、设置参数不合法的详情信息的业务方法、获取验证字段的业务方法以及存储参数不合法信息的数据格式的字段。
可选地,获取所述输入参数的待校验字段列表的步骤,包括:调用所述抽象业务基类中的获取验证字段的业务方法,以通过JAVA反射获取所述抽象业务对象所属子类中的所有带有注解的字段,从而得到所述输入参数的待校验字段列表。
可选地,获取所述输入参数的待校验字段列表的步骤,包括:调用所述抽象业务对象所属子类中自定义的获取验证字段的业务方法,以通过JAVA反射获取所述抽象业务对象所属子类中的所有带有注解的字段;根据所述抽象业务对象所属子类自定义的筛选规则对所述获取的字段进行筛选,根据筛选出的字段得到所述输入参数的待校验字段列表。
可选地,按照与所述抽象业务对象对应的参数校验规则,校验所述待校验字段列表中的各字段的步骤,包括:调用所述抽象业务基类中判断参数是否合法的业务方法,以根据所述注解中的配置信息,执行第一校验,或者执行所述第一校验和第二校验;其中,所述第一校验包括:对所述待校验字段列表中的各字段是否空进行校验;所述第二校验包括:对各字段的如下三者中至少一者进行校验:字符最大长度、字符最小长度、正则表达式。
可选地,按照与所述抽象业务对象对应的参数校验规则,校验所述待校验字段列表中的各字段的步骤,包括:按照所述抽象业务对象所属子类中的自定义校验规则,校验所述待校验字段列表中的各字段是否符合所述自定义校验规则。
可选地,校验所述待校验字段列表中的各字段的步骤之后,包括:调用所述抽象业务基类中设置参数不合法的详情信息的业务方法,以将校验未通过的参数不合法详情信息记录在所述存储参数不合法信息的数据格式的字段中。
根据本发明实施例的另一方面,提供了一种参数校验装置。
一种参数校验装置,包括:接收模块,用于通过预定义的抽象业务对象接收业务逻辑的输入参数;获取模块,用于在所述业务逻辑执行之前通过切面拦截所述业务逻辑,并在所述业务逻辑的方法参数包括所述抽象业务对象时,获取所述输入参数的待校验字段列表;校验模块,用于按照与所述抽象业务对象对应的参数校验规则,校验所述待校验字段列表中的各字段,以得到所述业务逻辑的输入参数校验结果。
可选地,还包括业务基类定义模块,用于:定义抽象业务基类,所述抽象业务基类是所述抽象业务对象所属子类的父类;其中,所述抽象业务基类包括判断参数是否合法的业务方法、设置参数不合法的详情信息的业务方法、获取验证字段的业务方法以及存储参数不合法信息的数据格式的字段。
可选地,所述获取模块还用于:调用所述抽象业务基类中的获取验证字段的业务方法,以通过JAVA反射获取所述抽象业务对象所属子类中的所有带有注解的字段,从而得到所述输入参数的待校验字段列表。
可选地,所述获取模块还用于:调用所述抽象业务对象所属子类中自定义的获取验证字段的业务方法,以通过JAVA反射获取所述抽象业务对象所属子类中的所有带有注解的字段;根据所述抽象业务对象所属子类自定义的筛选规则对所述获取的字段进行筛选,根据筛选出的字段得到所述输入参数的待校验字段列表。
可选地,所述校验模块还用于:调用所述抽象业务基类中判断参数是否合法的业务方法,以根据所述注解中的配置信息,执行第一校验,或者执行所述第一校验和第二校验;其中,所述第一校验包括:对所述待校验字段列表中的各字段是否空进行校验;所述第二校验包括:对各字段的如下三者中至少一者进行校验:字符最大长度、字符最小长度、正则表达式。
可选地,所述校验模块还用于:按照所述抽象业务对象所属子类中的自定义校验规则,校验所述待校验字段列表中的各字段是否符合所述自定义校验规则。
可选地,还包括信息记录模块,用于:调用所述抽象业务基类中设置参数不合法的详情信息的业务方法,以将校验未通过的参数不合法详情信息记录在所述存储参数不合法信息的数据格式的字段中。
根据本发明实施例的又一方面,提供了一种电子设备。
一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现本发明提供的参数校验方法。
根据本发明实施例的又一方面,提供了一种计算机可读介质。
一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明提供的参数校验方法。
上述发明中的一个实施例具有如下优点或有益效果:通过预定义的抽象业务对象接收业务逻辑的输入参数;在业务逻辑执行之前通过切面拦截业务逻辑,并在业务逻辑的方法参数包括抽象业务对象时,获取输入参数的待校验字段列表;按照与抽象业务对象对应的参数校验规则,校验待校验字段列表中的各字段,以得到业务逻辑的输入参数校验结果。使得参数校验逻辑不侵入业务代码,参数校验逻辑和业务逻辑之间低耦合。在获取输入参数的待校验字段列表,以及,校验所述待校验字段列表中的各字段时,均可以使用抽象业务对象所属子类中自定义的业务方法或规则,开发通用性、可复用性、可扩展性好,简化开发成本和参数校验的工作量。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的参数校验方法的主要步骤示意图;
图2是根据本发明实施例的业务处理的一个优选流程示意图;
图3是根据本发明实施例的业务接收参数对象与BaseVo类的继承关系示意图;
图4是根据本发明实施例的自定义注解NotNull组成结构示意图;
图5是根据本发明实施例的参数校验的一个优选处理流程示意图;
图6是根据本发明实施例的参数校验装置的主要模块示意图;
图7是本发明实施例可以应用于其中的示例性系统架构图;
图8是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的参数校验方法的主要步骤示意图。
如图1所示,本发明实施例的参数校验方法主要包括如下的步骤S101至步骤S103。
步骤S101:通过预定义的抽象业务对象接收业务逻辑的输入参数。
步骤S101之前,可以定义抽象业务基类,抽象业务基类是抽象业务对象所属子类的父类。
其中,抽象业务基类包括判断参数是否合法的业务方法、设置参数不合法的详情信息的业务方法、获取验证字段的业务方法以及存储参数不合法信息的数据格式的字段。
步骤S102:在业务逻辑执行之前通过切面拦截业务逻辑,并在业务逻辑的方法参数包括抽象业务对象时,获取输入参数的待校验字段列表。
在一个实施方式中,获取输入参数的待校验字段列表的步骤,具体可以包括:
调用抽象业务基类中的获取验证字段的业务方法,以通过JAVA反射获取抽象业务对象所属子类中的所有带有注解的字段,从而得到输入参数的待校验字段列表。
在另一实施方式中,获取输入参数的待校验字段列表的步骤,具体可以包括:
调用抽象业务对象所属子类中自定义的获取验证字段的业务方法,以通过JAVA反射获取抽象业务对象所属子类中的所有带有注解的字段;
根据抽象业务对象所属子类自定义的筛选规则对获取的字段进行筛选,根据筛选出的字段得到输入参数的待校验字段列表。
在该实施方式中,抽象业务基类的子类(即抽象业务对象所属子类)可以根据业务需求,重写抽象业务基类中规定的获取验证字段的业务方法,具有良好的可扩展性。
其中,反射是一种计算机处理方式。程序可以访问、检测和修改它本身状态或行为的这种能力,能提供封装程序集(程序集包含模块,而模块包含类型,类型又包含成员)、类型的对象。
步骤S103:按照与抽象业务对象对应的参数校验规则,校验待校验字段列表中的各字段,以得到业务逻辑的输入参数校验结果。
在一个实施方式中,按照与抽象业务对象对应的参数校验规则,校验待校验字段列表中的各字段的步骤,具体可以包括:
调用抽象业务基类中判断参数是否合法的业务方法,以根据注解中的配置信息,执行第一校验,或者执行第一校验和第二校验;
其中,第一校验包括:对待校验字段列表中的各字段是否空进行校验;第二校验包括:对各字段的如下三者中至少一者进行校验:字符最大长度、字符最小长度、正则表达式。
其中,可以根据注解中的配置信息,包括strMinLen(字符最小长度)、strMaxLen(字符最大长度)、regStr(正则表达式)属性的配置情况,来决定是否执行第二校验、以及执行第二校验中上述三者的哪一者的校验。例如,当注解中的配置信息不配置strMinLen、strMaxLen、regStr属性时,则不执行第二校验;当配置了strMinLen、strMaxLen、regStr三种属性时,则对输入参数的字段执行字符最大长度、字符最小长度、正则表达式的校验。并且,在进行校验时,可首先执行第一校验,在第一校验通过的情况下,再执行第二校验。在执行第二校验时,可按照如下的顺序进行校验:字符最小长度、字符最大长度、正则表达式,即,对当前校验的字段,先校验其字符最小长度,在字符最小长度校验通过的情况下,校验字符最大长度,在字符最大长度校验通过的情况下,最后进行正则表达式校验。每个环节的校验如果未通过,则结束校验流程。
在另一个实施方式中,按照与抽象业务对象对应的参数校验规则,校验待校验字段列表中的各字段的步骤,具体可以包括:
按照抽象业务对象所属子类中的自定义校验规则,校验待校验字段列表中的各字段是否符合自定义校验规则。
在该实施方式中,抽象业务基类的子类(即抽象业务对象所属子类)可以根据业务需求,重写抽象业务基类中规定的判断参数是否合法的业务方法,按照自定义校验规则来校验输入参数。例如,在判断输入参数的值是不是为特定预期的参数值等业务场景下,如果用父类(抽象业务基类)的参数校验规则将导致校验失败,根据本实施方式,用户可以在抽象业务基类的子类重写参数校验的判断逻辑,判断当输入参数的字段值与特定预期的参数值一致时,通过校验,否则校验不通过。从而使得本发明实施例的参数校验方法具有良好的可扩展性和通用性,在系统庞大、业务繁多的复杂系统中简化开发成本。
校验待校验字段列表中的各字段的步骤之后,可以调用抽象业务基类中设置参数不合法的详情信息的业务方法,以将校验未通过的参数不合法详情信息记录在存储参数不合法信息的数据格式的字段中。
输入参数校验结果可以包括校验通过和校验未通过。若校验通过,则利用校验通过的参数执行业务逻辑,若校验未通过,这不执行业务逻辑,而结束业务处理流程。
图2是根据本发明实施例的业务处理的一个优选流程示意图。
如图2所示,本发明实施例的业务处理流程中,定义参数校验逻辑的处理规范之后,根据定义的规范在业务处理前自动进行参数校验,从而对业务功能代码无侵入。具体步骤包括步骤S201至步骤S203。
步骤S201:定义参数校验逻辑的处理规范。
为了将不同业务功能参数的校验逻辑统一起来,并且业务逻辑能够复用和具备可扩展的目的。本发明实施例定义了如下的处理规范:
本发明实施例定义使用JAVA中抽象BaseVo类型接收业务逻辑的输入参数的规范。该类定义了判断参数是否合法的业务方法、设置参数不合法的详情信息的业务方法、获取验证字段的业务方法以及存储参数不合法信息的Map数据格式的字段。
抽象BaseVo类型是抽象业务基类,在接收业务逻辑的输入参数时,通过定义的该BaseVo类的子类的业务接收参数对象,即抽象业务对象来接收该输入参数。因此,业务接收参数对象必须是BaseVo的子类,这样子类就可以利用JAVA继承的特性拥有父类定义的参数校验逻辑的上述各业务方法。此外,子类可以根据自己独特的场景重写判断参数是否合法的业务方法来达到扩展的目的。业务接收参数对象与BaseVo类的继承关系如图3所示,图3示例性示出两个业务接收参数对象:业务VO1和业务VO2,业务VO1和业务VO2所属的子类可以利用JAVA继承的特性,拥有父类(BaseVO)定义的参数校验逻辑的各业务方法。
获取验证字段的业务方法,主要是根据作用于BaseVo类的子类字段的@NotNull自定义注解,根据JAVA反射技术获取到子类中标注了该注解的字段,以输入参数的待校验字段列表的形式返回。
判断参数是否合法的业务方法,是根据获取验证字段的业务方法返回的待校验字段列表,对待校验字段列表进行遍历,为了节约性能开销,在遍历的过程中如果发现当前校验字段不合法则停止继续遍历,保存参数不合法详情信息及返回参数不合法的结果。具体地,首先判断字段是否为空,如果字段为空则说明参数校验不合法,调用设置参数不合法的详情信息的业务方法,并保存参数不合法详情信息;如果参数不为空,则进一步根据@NotNull注解中的配置信息,包括配置的strMinLen(字符最小长度)、strMaxLen(字符最大长度)、regStr(正则表达式)属性,来决定是否进行字符串长度及正则表达式的校验,其中,配置信息中strMinLen、strMaxLen、regStr三个属性只有被配置才会生效,不配置代表不需要校验。
设置参数不合法的详情信息的业务方法主要是把参数不合法的详情信息记录在BaseVO类中定义的Map数据结构的字段里。这个Map字段中key(键)记录参数不合法的类型信息(如参数缺失,参数值不合法等)以及不合法详情信息(为了快速定位问题其中会将接收的字段名携带上)。
本发明还定义了参数校验的自定义注解规范。自定义注解用于存储参数校验逻辑的配置信息,本发明定义了自定义注解NotNull,该注解表明输入参数不能为空,该注解还申明了strMinLen(字符最小长度)、strMaxLen(字符最大长度)、regStr(正则表达式)三个属性。依托正则表达式的强大功能,上述三个属性能够覆盖日常业务中绝大多数应用场景。strMinLen表明字符串最小长度,为-1时表明不限制,该属性只对字符串类的输入参数起作用;strMaxLen表明字符串最大长度,为-1表明不限制,该属性只对字符串类的输入参数起作用;regStr表示校验的正则表达式,当值不为空时起作用。自定义注解NotNull组成结构如图4所示。
本发明实施例还定义业务逻辑的方法参数必须包括BaseVo类的子类的规范,还可以进一步规定业务逻辑的第一个方法参数为BaseVo类的子类,以便快速准确地找到需要进行参数校验的对象。为了统一进行参数校验处理逻辑,约定需要进行参数校验的参数封装在BaseVo类的子类,即业务接收参数对象(或称抽象业务对象)所属类为BaseVo类的子类。
步骤S202:根据定义的规范进行参数校验,若校验通过,则执行步骤S203,否则结束流程。
步骤S203:利用校验通过的输入参数进行业务逻辑处理。
图5是根据本发明实施例的参数校验的一个优选处理流程示意图。
如图5所示,本发明实施例的参数校验的一个优选处理流程包括如下的步骤S501至步骤S513。
步骤S501:判断业务逻辑的第一个方法参数是否为BaseVo实例,若是,则执行步骤S502,否则,结束流程。
其中BaseVo实例可以为BaseVo类或BaseVo类的子类的对象。
步骤S502:获取BaseVo类的子类中标注了注解的字段,以得到输入参数的待校验字段列表。
具体地,调用抽象业务基类(BaseVo类)中的获取验证字段的业务方法,以通过JAVA反射获取BaseVo类的子类中的所有带有注解的字段,从而得到输入参数的待校验字段列表。
步骤S503:判断待校验字段列表中是否有未校验的字段,若是,则执行步骤S504,否则结束流程。
步骤S504:判断当前校验字段是否为空,若是,则结束流程,否则执行步骤S505。
步骤S505:判断是否需要进行字符最小长度验证,若是,则执行步骤S506,否则,执行步骤S508。
步骤S506:对当前校验字段执行字符最小长度验证,然后执行步骤S507。
步骤S507:判断对当前校验字段的字符最小长度验证是否通过,若是,则执行步骤S508,否则结束流程。
步骤S508:判断是否需要进行字符最大长度验证,若是,则执行步骤S509,否则,执行步骤S511。
步骤S509:对当前校验字段执行字符最大长度验证,然后执行步骤S510。
步骤S510:判断对当前校验字段的字符最大长度验证是否通过,若是,则执行步骤S511,否则结束流程。
步骤S511:判断是否需要进行正则验证,若是,则执行步骤S512,否则,返回步骤S503。
步骤S512:对当前校验字段执行正则验证,然后执行步骤S513。
步骤S513:判断对当前校验字段的正则验证是否通过,若是,则返回步骤S503,否则,结束流程。
可以调用抽象业务基类(BaseVo类)中判断参数是否合法的业务方法,以根据注解中的配置信息,执行上述的判断当前校验字段是否为空、以及进行字符最小长度验证、字符最大长度验证、正则验证的操作。注解中的配置信息包括配置的strMinLen(字符最小长度)、strMaxLen(字符最大长度)、regStr(正则表达式)属性,该三个属性中若某属性不配置代表不需要校验字段的该属性。
此外,为了使参数校验逻辑不侵入业务代码,本发明实施例采用Spring AOP(面向切面的编程)思想,采用环绕通知的方式实现,在业务逻辑之前预先调用BaseVO的判断参数是否合法的逻辑,当参数不合法时则输出自定义的业务异常。
本发明实施例定义通用的接收用户输入参数的抽象业务对象,将参数校验代码在抽象的业务基类实现,在参数校验的过程中使用了自定义的注解,将判断的参数通过注解属性方式配置,将统一参数校验的逻辑通过自定义切面来调用,并且本发明实施例的统一参数校验逻辑可以克服因业务功能的差异性而导致的参数校验逻辑很难公用的问题。
图6是根据本发明实施例的参数校验装置的主要模块示意图。
本发明实施例的参数校验装置600主要包括:接收模块601、获取模块602、校验模块603。
接收模块601用于通过预定义的抽象业务对象接收业务逻辑的输入参数。
参数校验装置600还可以包括业务基类定义模块,用于:定义抽象业务基类,抽象业务基类是抽象业务对象所属子类的父类;其中,抽象业务基类包括判断参数是否合法的业务方法、设置参数不合法的详情信息的业务方法、获取验证字段的业务方法以及存储参数不合法信息的数据格式的字段。
获取模块602用于在业务逻辑执行之前通过切面拦截业务逻辑,并在业务逻辑的方法参数包括抽象业务对象时,获取输入参数的待校验字段列表。
在一个实施方式中,获取模块602具体可以用于:调用抽象业务基类中的获取验证字段的业务方法,以通过JAVA反射获取抽象业务对象所属子类中的所有带有注解的字段,从而得到输入参数的待校验字段列表。
在另一个实施方式中,获取模块602具体可以用于:调用抽象业务对象所属子类中自定义的获取验证字段的业务方法,以通过JAVA反射获取抽象业务对象所属子类中的所有带有注解的字段;根据抽象业务对象所属子类自定义的筛选规则对获取的字段进行筛选,根据筛选出的字段得到输入参数的待校验字段列表。
校验模块603用于按照与抽象业务对象对应的参数校验规则,校验待校验字段列表中的各字段,以得到业务逻辑的输入参数校验结果。
在一个实施方式中,校验模块603具体可以用于:调用抽象业务基类中判断参数是否合法的业务方法,以根据注解中的配置信息,执行第一校验,或者执行第一校验和第二校验;
其中,第一校验包括:对待校验字段列表中的各字段是否空进行校验;第二校验包括:对各字段的如下三者中至少一者进行校验:字符最大长度、字符最小长度、正则表达式。
在另一个实施方式中,校验模块603具体可以用于:按照抽象业务对象所属子类中的自定义校验规则,校验待校验字段列表中的各字段是否符合自定义校验规则。
参数校验装置600还可以包括信息记录模块,用于:调用抽象业务基类中设置参数不合法的详情信息的业务方法,以将校验未通过的参数不合法详情信息记录在存储参数不合法信息的数据格式的字段中。
另外,在本发明实施例中参数校验装置的具体实施内容,在上面所述参数校验方法中已经详细说明了,故在此重复内容不再说明。
图7示出了可以应用本发明实施例的参数校验方法或参数校验装置的示例性系统架构700。
如图7所示,系统架构700可以包括终端设备701、702、703,网络704和服务器705。网络704用以在终端设备701、702、703和服务器705之间提供通信链路的介质。网络704可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备701、702、703通过网络704与服务器705交互,以接收或发送消息等。终端设备701、702、703上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备701、702、703可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器705可以是提供各种服务的服务器,例如对用户利用终端设备701、702、703所浏览的购物类网站提供支持的后台管理服务器。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息)反馈给终端设备。
需要说明的是,本发明实施例所提供的参数校验方法可以由服务器705或终端设备701、702、703执行,相应地,参数校验装置可以设置于服务器705或终端设备701、702、703中。
应该理解,图7中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图8,其示出了适于用来实现本申请实施例的终端设备或服务器的计算机系统800的结构示意图。图8示出的终端设备或服务器仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图8所示,计算机系统800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有系统800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本申请的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括接收模块601、获取模块602、校验模块603。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,接收模块601还可以被描述为“用于通过预定义的抽象业务对象接收业务逻辑的输入参数的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:通过预定义的抽象业务对象接收业务逻辑的输入参数;在所述业务逻辑执行之前通过切面拦截所述业务逻辑,并在所述业务逻辑的方法参数包括所述抽象业务对象时,获取所述输入参数的待校验字段列表;按照与所述抽象业务对象对应的参数校验规则,校验所述待校验字段列表中的各字段,以得到所述业务逻辑的输入参数校验结果。
根据本发明实施例的技术方案,通过预定义的抽象业务对象接收业务逻辑的输入参数;在业务逻辑执行之前通过切面拦截业务逻辑,并在业务逻辑的方法参数包括抽象业务对象时,获取输入参数的待校验字段列表;按照与抽象业务对象对应的参数校验规则,校验待校验字段列表中的各字段,以得到业务逻辑的输入参数校验结果。使得参数校验逻辑不侵入业务代码,参数校验逻辑和业务逻辑之间低耦合。在获取输入参数的待校验字段列表,以及,校验所述待校验字段列表中的各字段时,均可以使用抽象业务对象所属子类中自定义的业务方法或规则,开发通用性、可复用性、可扩展性好,简化开发成本和参数校验的工作量。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (16)

1.一种参数校验方法,其特征在于,包括:
通过预定义的抽象业务对象接收业务逻辑的输入参数;
在所述业务逻辑执行之前通过切面拦截所述业务逻辑,并在所述业务逻辑的方法参数包括所述抽象业务对象时,获取所述输入参数的待校验字段列表;
按照与所述抽象业务对象对应的参数校验规则,校验所述待校验字段列表中的各字段,以得到所述业务逻辑的输入参数校验结果。
2.根据权利要求1所述的方法,其特征在于,通过预定义的抽象业务对象接收业务逻辑的输入参数的步骤之前,包括:
定义抽象业务基类,所述抽象业务基类是所述抽象业务对象所属子类的父类;
其中,所述抽象业务基类包括判断参数是否合法的业务方法、设置参数不合法的详情信息的业务方法、获取验证字段的业务方法以及存储参数不合法信息的数据格式的字段。
3.根据权利要求2所述的方法,其特征在于,获取所述输入参数的待校验字段列表的步骤,包括:
调用所述抽象业务基类中的获取验证字段的业务方法,以通过JAVA反射获取所述抽象业务对象所属子类中的所有带有注解的字段,从而得到所述输入参数的待校验字段列表。
4.根据权利要求2所述的方法,其特征在于,获取所述输入参数的待校验字段列表的步骤,包括:
调用所述抽象业务对象所属子类中自定义的获取验证字段的业务方法,以通过JAVA反射获取所述抽象业务对象所属子类中的所有带有注解的字段;
根据所述抽象业务对象所属子类自定义的筛选规则对所述获取的字段进行筛选,根据筛选出的字段得到所述输入参数的待校验字段列表。
5.根据权利要求3或4所述的方法,其特征在于,按照与所述抽象业务对象对应的参数校验规则,校验所述待校验字段列表中的各字段的步骤,包括:
调用所述抽象业务基类中判断参数是否合法的业务方法,以根据所述注解中的配置信息,执行第一校验,或者执行所述第一校验和第二校验;
其中,所述第一校验包括:对所述待校验字段列表中的各字段是否空进行校验;所述第二校验包括:对各字段的如下三者中至少一者进行校验:字符最大长度、字符最小长度、正则表达式。
6.根据权利要求3或4所述的方法,其特征在于,按照与所述抽象业务对象对应的参数校验规则,校验所述待校验字段列表中的各字段的步骤,包括:
按照所述抽象业务对象所属子类中的自定义校验规则,校验所述待校验字段列表中的各字段是否符合所述自定义校验规则。
7.根据权利要求2所述的方法,其特征在于,校验所述待校验字段列表中的各字段的步骤之后,包括:
调用所述抽象业务基类中设置参数不合法的详情信息的业务方法,以将校验未通过的参数不合法详情信息记录在所述存储参数不合法信息的数据格式的字段中。
8.一种参数校验装置,其特征在于,包括:
接收模块,用于通过预定义的抽象业务对象接收业务逻辑的输入参数;
获取模块,用于在所述业务逻辑执行之前通过切面拦截所述业务逻辑,并在所述业务逻辑的方法参数包括所述抽象业务对象时,获取所述输入参数的待校验字段列表;
校验模块,用于按照与所述抽象业务对象对应的参数校验规则,校验所述待校验字段列表中的各字段,以得到所述业务逻辑的输入参数校验结果。
9.根据权利要求8所述的装置,其特征在于,还包括业务基类定义模块,用于:
定义抽象业务基类,所述抽象业务基类是所述抽象业务对象所属子类的父类;
其中,所述抽象业务基类包括判断参数是否合法的业务方法、设置参数不合法的详情信息的业务方法、获取验证字段的业务方法以及存储参数不合法信息的数据格式的字段。
10.根据权利要求9所述的装置,其特征在于,所述获取模块还用于:
调用所述抽象业务基类中的获取验证字段的业务方法,以通过JAVA反射获取所述抽象业务对象所属子类中的所有带有注解的字段,从而得到所述输入参数的待校验字段列表。
11.根据权利要求9所述的装置,其特征在于,所述获取模块还用于:
调用所述抽象业务对象所属子类中自定义的获取验证字段的业务方法,以通过JAVA反射获取所述抽象业务对象所属子类中的所有带有注解的字段;
根据所述抽象业务对象所属子类自定义的筛选规则对所述获取的字段进行筛选,根据筛选出的字段得到所述输入参数的待校验字段列表。
12.根据权利要求10或11所述的装置,其特征在于,所述校验模块还用于:
调用所述抽象业务基类中判断参数是否合法的业务方法,以根据所述注解中的配置信息,执行第一校验,或者执行所述第一校验和第二校验;
其中,所述第一校验包括:对所述待校验字段列表中的各字段是否空进行校验;所述第二校验包括:对各字段的如下三者中至少一者进行校验:字符最大长度、字符最小长度、正则表达式。
13.根据权利要求10或11所述的装置,其特征在于,所述校验模块还用于:
按照所述抽象业务对象所属子类中的自定义校验规则,校验所述待校验字段列表中的各字段是否符合所述自定义校验规则。
14.根据权利要求9所述的装置,其特征在于,还包括信息记录模块,用于:
调用所述抽象业务基类中设置参数不合法的详情信息的业务方法,以将校验未通过的参数不合法详情信息记录在所述存储参数不合法信息的数据格式的字段中。
15.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
16.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7中任一所述的方法。
CN201810825281.2A 2018-07-25 2018-07-25 一种参数校验方法和装置 Pending CN110765422A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810825281.2A CN110765422A (zh) 2018-07-25 2018-07-25 一种参数校验方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810825281.2A CN110765422A (zh) 2018-07-25 2018-07-25 一种参数校验方法和装置

Publications (1)

Publication Number Publication Date
CN110765422A true CN110765422A (zh) 2020-02-07

Family

ID=69328129

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810825281.2A Pending CN110765422A (zh) 2018-07-25 2018-07-25 一种参数校验方法和装置

Country Status (1)

Country Link
CN (1) CN110765422A (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111290742A (zh) * 2020-03-04 2020-06-16 五八有限公司 参数验证方法、装置、电子设备及可读存储介质
CN111444224A (zh) * 2020-03-24 2020-07-24 政采云有限公司 一种业务数据校验方法及装置
CN111459911A (zh) * 2020-03-30 2020-07-28 上海云励科技有限公司 业务数据的处理方法及设备
CN112181804A (zh) * 2020-08-31 2021-01-05 五八到家有限公司 一种参数校验方法、设备以及存储介质
CN112182037A (zh) * 2020-09-28 2021-01-05 百度在线网络技术(北京)有限公司 数据校验方法、装置、设备以及存储介质
CN112363935A (zh) * 2020-11-11 2021-02-12 平安普惠企业管理有限公司 数据联调方法、装置、电子设备及存储介质
CN112463506A (zh) * 2020-12-15 2021-03-09 山东浪潮商用系统有限公司 一种基于AOP的RESTful API统一参数校验方法
CN112565233A (zh) * 2020-11-30 2021-03-26 上海瑞眼科技有限公司 一种用于消防物联网接入平台的数据验证方法及系统
CN112613298A (zh) * 2020-12-29 2021-04-06 北京嘀嘀无限科技发展有限公司 数据校验方法、系统、计算机程序产品和电子设备
CN113722733A (zh) * 2021-08-27 2021-11-30 北京航天云路有限公司 一种基于Java注解实现的数据访问权限控制方法
CN113778725A (zh) * 2020-06-03 2021-12-10 北京沃东天骏信息技术有限公司 一种数据校验方法和装置
CN114895975A (zh) * 2022-04-27 2022-08-12 上海万物新生环保科技集团有限公司 一种服务端系统的预热方法及设备
CN115334145A (zh) * 2022-08-09 2022-11-11 中国建设银行股份有限公司 一种业务处理方法、装置、电子设备及存储介质
CN116909930A (zh) * 2023-09-11 2023-10-20 智业软件股份有限公司 实现前端网页运行时变量异常检测的方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105677326A (zh) * 2015-12-28 2016-06-15 国云科技股份有限公司 一种软件接口参数验证方法
CN106293808A (zh) * 2016-07-26 2017-01-04 北京北森云计算股份有限公司 多语言云编译实现系统功能动态拦截扩展的方法及系统
CN106484590A (zh) * 2015-09-02 2017-03-08 阿里巴巴集团控股有限公司 数据校验方法和装置
WO2017081804A1 (ja) * 2015-11-13 2017-05-18 株式会社日立製作所 パラメータ判定システム及び方法
CN108021468A (zh) * 2017-12-08 2018-05-11 泰康保险集团股份有限公司 医疗养老协同系统中业务数据的校验方法及装置
CN108132880A (zh) * 2017-12-21 2018-06-08 武汉斑马快跑科技有限公司 一种参数校验方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106484590A (zh) * 2015-09-02 2017-03-08 阿里巴巴集团控股有限公司 数据校验方法和装置
WO2017081804A1 (ja) * 2015-11-13 2017-05-18 株式会社日立製作所 パラメータ判定システム及び方法
CN105677326A (zh) * 2015-12-28 2016-06-15 国云科技股份有限公司 一种软件接口参数验证方法
CN106293808A (zh) * 2016-07-26 2017-01-04 北京北森云计算股份有限公司 多语言云编译实现系统功能动态拦截扩展的方法及系统
CN108021468A (zh) * 2017-12-08 2018-05-11 泰康保险集团股份有限公司 医疗养老协同系统中业务数据的校验方法及装置
CN108132880A (zh) * 2017-12-21 2018-06-08 武汉斑马快跑科技有限公司 一种参数校验方法及装置

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111290742A (zh) * 2020-03-04 2020-06-16 五八有限公司 参数验证方法、装置、电子设备及可读存储介质
CN111444224A (zh) * 2020-03-24 2020-07-24 政采云有限公司 一种业务数据校验方法及装置
CN111444224B (zh) * 2020-03-24 2023-08-15 政采云有限公司 一种业务数据校验方法及装置
CN111459911A (zh) * 2020-03-30 2020-07-28 上海云励科技有限公司 业务数据的处理方法及设备
CN111459911B (zh) * 2020-03-30 2022-12-13 上海云砺信息科技有限公司 业务数据的处理方法及设备
CN113778725A (zh) * 2020-06-03 2021-12-10 北京沃东天骏信息技术有限公司 一种数据校验方法和装置
CN112181804A (zh) * 2020-08-31 2021-01-05 五八到家有限公司 一种参数校验方法、设备以及存储介质
CN112181804B (zh) * 2020-08-31 2023-09-08 五八到家有限公司 一种参数校验方法、设备以及存储介质
CN112182037B (zh) * 2020-09-28 2024-03-29 百度在线网络技术(北京)有限公司 数据校验方法、装置、设备以及存储介质
CN112182037A (zh) * 2020-09-28 2021-01-05 百度在线网络技术(北京)有限公司 数据校验方法、装置、设备以及存储介质
CN112363935A (zh) * 2020-11-11 2021-02-12 平安普惠企业管理有限公司 数据联调方法、装置、电子设备及存储介质
CN112565233A (zh) * 2020-11-30 2021-03-26 上海瑞眼科技有限公司 一种用于消防物联网接入平台的数据验证方法及系统
CN112463506A (zh) * 2020-12-15 2021-03-09 山东浪潮商用系统有限公司 一种基于AOP的RESTful API统一参数校验方法
CN112613298A (zh) * 2020-12-29 2021-04-06 北京嘀嘀无限科技发展有限公司 数据校验方法、系统、计算机程序产品和电子设备
CN113722733A (zh) * 2021-08-27 2021-11-30 北京航天云路有限公司 一种基于Java注解实现的数据访问权限控制方法
CN114895975B (zh) * 2022-04-27 2023-07-25 上海万物新生环保科技集团有限公司 一种服务端系统的预热方法及设备
CN114895975A (zh) * 2022-04-27 2022-08-12 上海万物新生环保科技集团有限公司 一种服务端系统的预热方法及设备
CN115334145A (zh) * 2022-08-09 2022-11-11 中国建设银行股份有限公司 一种业务处理方法、装置、电子设备及存储介质
CN115334145B (zh) * 2022-08-09 2024-04-12 中国建设银行股份有限公司 一种业务处理方法、装置、电子设备及存储介质
CN116909930A (zh) * 2023-09-11 2023-10-20 智业软件股份有限公司 实现前端网页运行时变量异常检测的方法和装置
CN116909930B (zh) * 2023-09-11 2023-11-24 智业软件股份有限公司 实现前端网页运行时变量异常检测的方法和装置

Similar Documents

Publication Publication Date Title
CN110765422A (zh) 一种参数校验方法和装置
CN109981322B (zh) 基于标签的云资源管理的方法和装置
CN111427701A (zh) 一种工作流引擎系统和业务处理方法
CN111563015B (zh) 数据监控方法及装置、计算机可读介质及终端设备
CN110795315A (zh) 监控业务的方法和装置
CN110874307A (zh) 事件埋点的收集上报方法和装置
CN110795741A (zh) 对数据进行安全性处理的方法和装置
CN109933508B (zh) 用于发送信息的方法和装置
CN111381899A (zh) 用于开发目标系统的方法和装置
CN107678755B (zh) 安装包打包的方法、装置、电子设备和计算机可读介质
CN113778725A (zh) 一种数据校验方法和装置
CN110554892A (zh) 信息获取方法和装置
CN113760487B (zh) 一种业务处理方法和装置
CN114625458A (zh) 页面数据的处理方法、装置、电子设备和存储介质
CN112306723B (zh) 一种应用于小程序的运行信息获取方法和装置
CN109087097B (zh) 一种更新链码同一标识的方法和装置
CN112463616A (zh) 一种面向Kubernetes容器平台的混沌测试方法和装置
CN112835609A (zh) 一种修改依赖包下载地址的方法和装置
CN113448652A (zh) 一种请求处理方法和装置
CN113360939B (zh) 一种安全访问的控制方法和装置
CN112965747B (zh) 挖掘代码漏洞的方法、装置、设备和计算机可读介质
CN113342633B (zh) 一种性能测试方法和装置
CN112783665B (zh) 接口补偿的方法和装置
CN112817603A (zh) 应用程序处理方法、装置、电子设备、系统和存储介质
CN113535167A (zh) 处理列表页的方法、装置、电子设备和计算机可读介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination