CN107957871A - 一种基于jsr303的前后端同步正则校验方法 - Google Patents

一种基于jsr303的前后端同步正则校验方法 Download PDF

Info

Publication number
CN107957871A
CN107957871A CN201711130896.5A CN201711130896A CN107957871A CN 107957871 A CN107957871 A CN 107957871A CN 201711130896 A CN201711130896 A CN 201711130896A CN 107957871 A CN107957871 A CN 107957871A
Authority
CN
China
Prior art keywords
verification
parameter
back end
canonical
jsr303
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.)
Granted
Application number
CN201711130896.5A
Other languages
English (en)
Other versions
CN107957871B (zh
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.)
DBAPPSecurity Co Ltd
Original Assignee
DBAPPSecurity 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 DBAPPSecurity Co Ltd filed Critical DBAPPSecurity Co Ltd
Priority to CN201711130896.5A priority Critical patent/CN107957871B/zh
Publication of CN107957871A publication Critical patent/CN107957871A/zh
Application granted granted Critical
Publication of CN107957871B publication Critical patent/CN107957871B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • G06F8/4435Detection or removal of dead or redundant code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种基于JSR303的前后端同步正则校验方法,配置校验规则的唯一识别KEY、校验失败时的反馈符MESSAGE和校验注解使用的正则表达式,加载配置文件后,调用校验工具,触发校验器初始化,初始化正则表达式,从注解中读取配置的参数;校验参数是否合法,如是,从待校验参数中获取参数,逐个执行校验,参数合法,结束。本发明使得前后端使用同一份正则校验规则解决前后端不同步的问题,由配置文件配置正则表达式,代码中所有的校验应用同一份校验规则,解决统一修改和管理的问题,封装校验结果,有助于更简洁明了获取结果。

Description

一种基于JSR303的前后端同步正则校验方法
技术领域
本发明涉及电数字数据处理的技术领域,特别涉及一种同步前后端正则校验表达式的基于JSR303的前后端同步正则校验方法。
背景技术
在大多数场景下,参数校验是程序开发中必不可少的过程。用户在前端页面上填写表单时,前端程序会校验参数的合法性,当数据到了后端,为了防止恶意操作、保持程序的健壮性,后端同样需要对数据进行校验。
对于绝大多数应用,都存在前端和后台,免不了数据交互,前端提交数据的时候有必要对数据进行合法性校验,而且两端都需要校验,后端参数校验最简单的做法是直接在业务方法里进行判断,当判断成功之后再继续往下执行,这使得当有多个地方需要校验时,就需要在每一个地方调用校验程序。对于现有的解决方案,存在以下几点问题:
1、前后端没有显示的使用同样的校验规则;
2、后台对同一种会存在校验规则不统一;
3、使用自定义正则表达式校验难以统一维护。
这样的操作方式直接导致代码的耦合、冗余且不美观,运算量大,如果没有一种简洁的解决方式将给开发人员带来长期重复劳动,而且影响代码的可读性。
发明内容
为了解决现有技术中存在的问题,本发明提供一种优化的基于JSR303的前后端同步正则校验方法,使用同一份正则校验规则解决前后端不同步问题。
本发明所采用的技术方案是,一种基于JSR303的前后端同步正则校验方法,所述方法包括以下步骤:
步骤1:配置校验规则的唯一识别KEY、校验失败时的反馈符MESSAGE和校验注解使用的正则表达式;
步骤2:加载配置文件;
步骤3:调用校验工具,触发校验器初始化,初始化正则表达式,从注解中读取步骤1中配置的参数;校验参数是否合法,如是,则进行下一步,否则,进行步骤5;
步骤4:从待校验参数中获取参数,逐个执行校验;参数合法,则进行步骤6;否则,进行步骤5;
步骤5:抛出异常;
步骤6:结束。
优选地,所述步骤2中,包括以下步骤:
步骤2.1:程序从资源根路径读取资源文件;
步骤2.2:将JSON格式的数据转换成Java的内置数组对象,验证配置参数是否合法;若合法则通过,进行下一步,若不合法,以异常的方式抛出,读取配置文件失败,进行步骤6;
步骤2.3:将内置数组对象缓存在内存中。
优选地,所述步骤4中,包括以下步骤:
步骤4.1:判断参数是否能获取,若是,进行下一步,否则查找内置缺省校验参数;若存在内置缺省校验参数,则进行下一步,否则进行步骤5;
步骤4.2:调用校验方法;
步骤4.3:校验通过,则进行步骤6,否则,进行下一步;
步骤4.4:将错误信息设置在校验器的上下文中,进行步骤6。
优选地,所述步骤4.2中,校验方法包括采用初始化后的正则表达式进行正则校验。
优选地,所述步骤4.4中,从校验器的上下文中获取错误信息,根据使用者需要输出结果。
本发明提供了一种优化的基于JSR303的前后端同步正则校验方法,通过配置校验规则的唯一识别KEY、校验失败时的反馈符MESSAGE和校验注解使用的正则表达式,加载配置文件后,调用校验工具,触发校验器初始化,初始化正则表达式,从注解中读取配置的参数;校验参数是否合法,如是,从待校验参数中获取参数,逐个执行校验,参数合法,结束。本发明使得前后端使用同一份正则校验规则解决前后端不同步的问题,由配置文件配置正则表达式,代码中所有的校验应用同一份校验规则,解决统一修改和管理的问题,封装校验结果,有助于更简洁明了获取结果。
附图说明
图1为本发明的流程图。
具体实施方式
下面结合实施例对本发明做进一步的详细描述,但本发明的保护范围并不限于此。
本发明涉及一种基于JSR303的前后端同步正则校验方法,JSR 303是JAVA EE 6中的一项子规范,即Bean Validation,其定义了很多常用的校验注解,可以直接将这些注解加在JavaBean的属性上,即可以在需要校验的时候进行校验。
本发明的方法包括了对属性进行注解和调用校验器进行验证这两部分。
使用内置的注解ValidatorPlus,注解在Bean的属性上,注明一个重要的参数key,之后的校验器会根据给定的key在JSON配置文件中搜索对应的正则表达式进行校验,除此之外还存在一些常见的校验,如手机号码、邮箱等,可以默认使用缺省的正则表达式校验,但当使用者配置了指定的正则表达式则使用指定的正则进行匹配。
使用校验器对Bean进行校验,支持对整个Bean的所有属性校验,也支持指定属性校验,可选方式包括校验结果使用字符输出或转换成异常输出。
校验器完成校验之后,对校验结果进行获取,根据校验方式的不同,接收字符结果或使用异常捕获来捕获校验结果。
具体来说,所述方法包括以下步骤。
步骤1:配置校验规则的唯一识别KEY、校验失败时的反馈符MESSAGE和校验注解使用的正则表达式。
本发明中,正则表达式以Regexp表达。
本发明中,给出一个实施例:
{
“KEY”:”phoneNumber”,
“MESSAGE”:”手机号码异常”,
“Regexp”:”/^1(3|4|5|7|8)\d{9}$/”
}
步骤2:加载配置文件。
所述步骤2中,包括以下步骤:
步骤2.1:程序从资源根路径读取资源文件;
步骤2.2:将JSON格式的数据转换成Java的内置数组对象,验证配置参数是否合法;若合法则通过,进行下一步,若不合法,以异常的方式抛出,读取配置文件失败,进行步骤6;
步骤2.3:将内置数组对象缓存在内存中。
本发明中,资源根路径是指类路径的根目录,一般情况下,在java的项目中是指Classpath。
本发明中,可以选用开源的JSON框架,如fastJSON、Jackson等,进行JSON字符串和JAVA对象之间转换。
步骤3:调用校验工具,触发校验器初始化,初始化正则表达式,从注解中读取步骤1中配置的参数;校验参数是否合法,如是,则进行下一步,否则,进行步骤5。
本发明中,校验参数是否合法主要是指检查被校验的对象的属性是否符合注解的约束条件。
步骤4:从待校验参数中获取参数,逐个执行校验;参数合法,则进行步骤6;否则,进行步骤5。
所述步骤4中,包括以下步骤。
步骤4.1:判断参数是否能获取,若是,进行下一步,否则查找内置缺省校验参数;若存在内置缺省校验参数,则进行下一步,否则进行步骤5。
步骤4.2:调用校验方法。
所述步骤4.2中,校验方法包括采用初始化后的正则表达式进行正则校验。
步骤4.3:校验通过,则进行步骤6,否则,进行下一步。
步骤4.4:将错误信息设置在校验器的上下文中,进行步骤6。
所述步骤4.4中,从校验器的上下文中获取错误信息,根据使用者需要输出结果。
本发明中,举例说明校验方法。定义一个用户的对象,对象包含名字、性别、手机号码等属性,使用ValidatorPlus框架的注解进行属性值限制,其中,名字限制为非空且长度在5个字以内,性别不能为空,手机号码必须符合现在手机号码的规则;假设当前对象的属性包括名字为张三、性别为空、手机号码为15264a1563,调用ValidatorPlus的校验器对对象进行校验,显然,性别为空且手机号码不符合规则,校验器抛出一个异常,并带有性别不能为空、手机号码错误(如果在配置文件中配置过)的相关提示;若当前对象的属性包括名字为张三、性别为男、手机号码为13412341234,调用校验器,该对象能通过校验,校验器不会抛出异常,校验通过。
本发明中,执行校验的过程中,主要使用初始化的正则表达式进行正则校验,若只给定KEY则通过KEY在内存中寻找加载进来的内置校验对象并从对象中获取正则表达式进行校验,若未指定任何信息,则程序会寻找缺省的正则表达式进行校验,若未找到则抛出异常。校验通过,则返回true,不通过返回false,并将错误信息设置在校验器的上下文中。
步骤5:抛出异常。
步骤6:结束。
本发明通过配置校验规则的唯一识别KEY、校验失败时的反馈符MESSAGE和校验注解使用的正则表达式,加载配置文件后,调用校验工具,触发校验器初始化,初始化正则表达式,从注解中读取配置的参数;校验参数是否合法,如是,从待校验参数中获取参数,逐个执行校验,参数合法,结束。本发明使得前后端使用同一份正则校验规则解决前后端不同步的问题,由配置文件配置正则表达式,代码中所有的校验应用同一份校验规则,解决统一修改和管理的问题,封装校验结果,有助于更简洁明了获取结果。

Claims (5)

1.一种基于JSR303的前后端同步正则校验方法,其特征在于:所述方法包括以下步骤:
步骤1:配置校验规则的唯一识别KEY、校验失败时的反馈符MESSAGE和校验注解使用的正则表达式;
步骤2:加载配置文件;
步骤3:调用校验工具,触发校验器初始化,初始化正则表达式,从注解中读取步骤1中配置的参数;校验参数是否合法,如是,则进行下一步,否则,进行步骤5;
步骤4:从待校验参数中获取参数,逐个执行校验;参数合法,则进行步骤6;否则,进行步骤5;
步骤5:抛出异常;
步骤6:结束。
2.根据权利要求1所述的一种基于JSR303的前后端同步正则校验方法,其特征在于:所述步骤2中,包括以下步骤:
步骤2.1:程序从资源根路径读取资源文件;
步骤2.2:将JSON格式的数据转换成Java的内置数组对象,验证配置参数是否合法;若合法则通过,进行下一步,若不合法,以异常的方式抛出,读取配置文件失败,进行步骤6;
步骤2.3:将内置数组对象缓存在内存中。
3.根据权利要求1所述的一种基于JSR303的前后端同步正则校验方法,其特征在于:所述步骤4中,包括以下步骤:
步骤4.1:判断参数是否能获取,若是,进行下一步,否则查找内置缺省校验参数;若存在内置缺省校验参数,则进行下一步,否则进行步骤5;
步骤4.2:调用校验方法;
步骤4.3:校验通过,则进行步骤6,否则,进行下一步;
步骤4.4:将错误信息设置在校验器的上下文中,进行步骤6。
4.根据权利要求3所述的一种基于JSR303的前后端同步正则校验方法,其特征在于:所述步骤4.2中,校验方法包括采用初始化后的正则表达式进行正则校验。
5.根据权利要求3所述的一种基于JSR303的前后端同步正则校验方法,其特征在于:所述步骤4.4中,从校验器的上下文中获取错误信息,根据使用者需要输出结果。
CN201711130896.5A 2017-11-15 2017-11-15 一种基于jsr303的前后端同步正则校验方法 Active CN107957871B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711130896.5A CN107957871B (zh) 2017-11-15 2017-11-15 一种基于jsr303的前后端同步正则校验方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711130896.5A CN107957871B (zh) 2017-11-15 2017-11-15 一种基于jsr303的前后端同步正则校验方法

Publications (2)

Publication Number Publication Date
CN107957871A true CN107957871A (zh) 2018-04-24
CN107957871B CN107957871B (zh) 2020-09-22

Family

ID=61963478

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711130896.5A Active CN107957871B (zh) 2017-11-15 2017-11-15 一种基于jsr303的前后端同步正则校验方法

Country Status (1)

Country Link
CN (1) CN107957871B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111459484A (zh) * 2020-03-30 2020-07-28 星辰天合(北京)数据科技有限公司 网页前后端分离开发时后端数据模拟方法
CN111897842A (zh) * 2020-01-02 2020-11-06 北京京东尚科信息技术有限公司 数据校验的方法、装置、计算机系统及介质
CN112612720A (zh) * 2020-12-31 2021-04-06 中国农业银行股份有限公司 一种属性校验方法、装置、设备及介质
CN112799673A (zh) * 2021-01-19 2021-05-14 烽火通信科技股份有限公司 一种网络协议数据的校核方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102103639A (zh) * 2011-01-26 2011-06-22 北京京东世纪贸易有限公司 数据验证方法和装置
CN104049972A (zh) * 2014-06-18 2014-09-17 北京京东尚科信息技术有限公司 一种数据验证方法及系统
US20150026027A1 (en) * 2009-06-12 2015-01-22 Guardian Analytics, Inc. Fraud detection and analysis
CN105808510A (zh) * 2014-12-31 2016-07-27 北京航天测控技术有限公司 一种调试数据校验方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150026027A1 (en) * 2009-06-12 2015-01-22 Guardian Analytics, Inc. Fraud detection and analysis
CN102103639A (zh) * 2011-01-26 2011-06-22 北京京东世纪贸易有限公司 数据验证方法和装置
CN104049972A (zh) * 2014-06-18 2014-09-17 北京京东尚科信息技术有限公司 一种数据验证方法及系统
CN105808510A (zh) * 2014-12-31 2016-07-27 北京航天测控技术有限公司 一种调试数据校验方法及装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111897842A (zh) * 2020-01-02 2020-11-06 北京京东尚科信息技术有限公司 数据校验的方法、装置、计算机系统及介质
CN111459484A (zh) * 2020-03-30 2020-07-28 星辰天合(北京)数据科技有限公司 网页前后端分离开发时后端数据模拟方法
CN111459484B (zh) * 2020-03-30 2022-11-29 北京星辰天合科技股份有限公司 网页前后端分离开发时后端数据模拟方法
CN112612720A (zh) * 2020-12-31 2021-04-06 中国农业银行股份有限公司 一种属性校验方法、装置、设备及介质
CN112799673A (zh) * 2021-01-19 2021-05-14 烽火通信科技股份有限公司 一种网络协议数据的校核方法及装置
CN112799673B (zh) * 2021-01-19 2022-03-25 烽火通信科技股份有限公司 一种网络协议数据的校核方法及装置

Also Published As

Publication number Publication date
CN107957871B (zh) 2020-09-22

Similar Documents

Publication Publication Date Title
CN107957871A (zh) 一种基于jsr303的前后端同步正则校验方法
US8959000B2 (en) Integrated testing systems and methods
CN104679532B (zh) 内核模块加载方法和装置
CN104754062B (zh) 基于互联网的信息推广方法、服务器及用户终端
CN106507341B (zh) 智能识别配置文件的方法、系统及移动终端
CN108664406A (zh) 移动应用的开发测试方法、终端设备及介质
CN101853189B (zh) 一种基于Java的异常处理装置及其异常处理方法
CN110334007A (zh) 一种功能接口调用验证方法及装置、电子设备及存储介质
CN106201633B (zh) 一种注入dll文件的方法及装置
CN111290742A (zh) 参数验证方法、装置、电子设备及可读存储介质
CN106161367A (zh) 一种动态口令验证方法及系统、客户端和服务器
CN111563075B (zh) 一种业务校验系统、方法及设备和存储介质
CN108228321A (zh) 一种安卓系统应用关闭方法和装置
CN108470004A (zh) 测试脚本生成方法、测试方法、装置、设备及存储介质
CN111385124A (zh) 一种网关业务实现方法、控制装置和网关
CN105205398B (zh) 一种基于apk加壳软件动态行为的查壳方法
CN108804399A (zh) 表单的校验方法及装置
CN109858257B (zh) 访问控制方法及装置
WO2016165461A1 (zh) 一种电信网网管系统软件自动化测试方法和装置
CN109032629A (zh) 一种代码更新方法及装置
CN109684213A (zh) 一种测试方法、装置及存储介质
CN106445479A (zh) 信息推送方法及装置
US20180018307A1 (en) Method of recording operations and method of automatically executing operations
CN111382051B (zh) 一种api自动测试方法及测试装置
CN107506474B (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
CB02 Change of applicant information

Address after: Zhejiang Zhongcai Building No. 68 Binjiang District road Hangzhou City, Zhejiang Province, the 310052 and 15 layer

Applicant after: Hangzhou Anheng Information Technology Co.,Ltd.

Address before: Zhejiang Zhongcai Building No. 68 Binjiang District road Hangzhou City, Zhejiang Province, the 310052 and 15 layer

Applicant before: DBAPPSECURITY Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant