首页> 中国专利> 一种表单提交方法及设备

一种表单提交方法及设备

摘要

本申请的目的是提供一种表单提交方法及设备,本申请客户端响应于打开目标表单向服务端发送防重请求;在服务端中创建有一防重组件,防重组件为目标表单生成防重信息,存储目标表单的打开时间和防重信息,并将防重信息返回至客户端,以使客户端获取所述目标表单的业务数据并向服务端发送表单提交请求;服务端基于防重信息、打开时间及提交时间,校验目标表单是否重复提交,若否则处理所述业务数据,并向客户端返回目标表单的业务处理结果,使得通过将用于表单的防重从业务抽离出去,创建一防重组件,并将该防重组件封装为独立部署的组件系统,提供简单易用的接入方式,无业务代码入侵,使得高复用且稳定安全的提供防重服务。

著录项

  • 公开/公告号CN112905163A

    专利类型发明专利

  • 公开/公告日2021-06-04

    原文格式PDF

  • 申请/专利权人 上海悦易网络信息技术有限公司;

    申请/专利号CN202110277507.1

  • 发明设计人 孙燕臣;

    申请日2021-03-15

  • 分类号G06F8/30(20180101);G06F8/38(20180101);

  • 代理机构31243 上海百一领御专利代理事务所(普通合伙);

  • 代理人汪祖乐

  • 地址 200433 上海市杨浦区淞沪路433号1101-1103室

  • 入库时间 2023-06-19 11:16:08

说明书

技术领域

本申请涉及计算机技术领域,尤其涉及一种表单提交方法及设备。

背景技术

为了防止表单在一定时间内重复提交而导致的服务器过载和资源浪费的问题,在现有技术中,可以通过前端控制和后端程序员控制来解决表单重复提交的问题。其中,通过前端控制时,使用延迟提交或者弹窗确认等方式,但由于前后端分离部署已是行业主流,这种控制无法真正意义解决重复提交问题,比如直接绕过前端进行表单提交的情况;通过后端程序员控制时,如先查询,比较之后再做存储或者其他一些额外开发来解决,但由于后端控制会增加开发成本,污染业务代码,可复用、移植性比较差。

发明内容

本申请的一个目的是提供一种表单提交方法及设备,使得提供简单易用的接入方式,无业务代码入侵,高复用,稳定安全的提供防重服务。

根据本申请的一个方面,提供了一种表单提交方法,应用于服务端,其中,所述方法包括:

创建一防重组件;

接收客户端响应于打开目标表单发送的防重请求,所述防重请求包括所述目标表单的标识符和打开时间;

所述防重组件为所述目标表单生成防重信息,存储所述目标表单的所述打开时间和所述防重信息;

将所述目标表单的防重信息返回至所述客户端;

接收所述客户端发送的所述目标表单的表单提交请求,所述表单提交请求包括所述业务数据、所述防重信息及提交时间;

所述防重组件基于所述防重信息获取所述打开时间,并基于所述打开时间和所述提交时间,校验所述目标表单是否重复提交;

若否,则处理所述业务数据,并向所述客户端返回所述目标表单的业务处理结果。

进一步地,上述方法中,所述基于所述打开时间和所述提交时间,校验所述目标表单是否重复提交之后,还包括:

若是,则向所述客户端返回用于指示所述目标表单重复提交的响应信息。

进一步地,上述方法中,所述方法还包括:

预置一缓存数据库,所述缓存数据库与所述防重组件相互独立;

其中,存储所述目标表单的所述打开时间和所述防重信息,包括:

将所述目标表单的所述打开时间和所述防重信息存储至所述缓存数据库;

其中,所述防重组件基于所述防重信息获取所述打开时间,包括:

所述防重组件基于所述防重信息,从所述缓存数据库获取与所述防重信息对应的所述打开时间。

进一步地,上述方法中,所述防重组件基于所述打开时间和所述提交时间,校验所述目标表单是否重复提交,包括:

查询并获取与所述目标表单对应的目标防重时长阈值;

计算所述打开时间与所述提交时间之间的时间差;

判断所述时间差是否大于所述目标防重时长阈值,

若是,则指示所述目标表单重复提交;

若否,则指示所述目标表单未重复提交。

进一步地,上述方法中,所述方法还包括:

预置防重配置信息,所述防重配置信息包括至少一种预设表单及每种易预设表单对应的第一防重时长阈值;

其中,所述查询并获取与所述目标表单对应的目标防重时长阈值,包括:

查询所述防重配置信息中是否存在与所述目标表单对应的第一防重时长阈值,

若存在,则将所述防重配置信息中的、与所述目标表单对应的第一防重时长阈值确定为所述目标防重时长阈值;

若不存在,则将预设的第二防重时长阈值确定为所述目标防重时长阈值,其中,所述第二防重时长阈值适用于任何一种表单。

根据本申请的另一方面,还提供了一种表单提交方法,应用于客户端,其中,所述方法包括:

响应于打开目标表单,向服务端发送防重请求,所述防重请求包括所述目标表单的标识符和打开时间,以使所述服务端中创建的一防重组件为所述目标表单生成防重信息并存储所述目标表单的所述打开时间和所述防重信息;

接收所述服务端返回的所述目标表单的防重信息;

获取所述目标表单的业务数据;

向所述服务端发送表单提交请求,所述表单提交请求包括所述业务数据、所述防重信息及提交时间,以使所述服务端基于所述防重信息、所述打开时间及所述提交时间,校验所述目标表单是否重复提交;

当所述目标表单未重复提交时,接收所述服务端返回的所述目标表单的业务处理结果。

进一步地,上述方法中,所述方法还包括:

当所述目标表单重复提交时,接收所述服务端返回的用于指示所述目标表单重复提交的响应信息。

根据本申请的另一方面,还提供了一种非易失性存储介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行时,使所述处理器实现如上述表单提交方法。

根据本申请的另一方面,还提供了一种用于表单提交的服务端,其中,该服务端包括:

一个或多个处理器;

计算机可读介质,用于存储一个或多个计算机可读指令,

当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述服务端的表单提交方法。

根据本申请的另一方面,还提供了一种用于表单提交的客户端,其中,该客户端包括:

一个或多个处理器;

计算机可读介质,用于存储一个或多个计算机可读指令,

当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述客户端的表单提交方法

与现有技术相比,本申请客户端响应于打开目标表单,向服务端发送防重请求,所述防重请求包括所述目标表单的标识符和打开时间;在服务端中创建有一防重组件,所述防重组件为所述目标表单生成防重信息,存储所述目标表单的所述打开时间和所述防重信息,所述服务端将所述目标表单的防重信息返回至所述客户端;所述客户端接收所述服务端返回的所述目标表单的防重信息,获取所述目标表单的业务数据,并向所述服务端发送表单提交请求,所述表单提交请求包括所述业务数据、所述防重信息及提交时间;所述服务端基于所述防重信息、所述打开时间及所述提交时间,校验所述目标表单是否重复提交,若否,则处理所述业务数据,并向所述客户端返回所述目标表单的业务处理结果,以便客户端接收所述服务端返回的所述目标表单的业务处理结果。本申请通过将用于表单的防重从业务抽离出去,创建一防重组件,并将该防重组件封装为独立部署的组件系统,提供简单易用的接入方式,无业务代码入侵,使得高复用且稳定安全的提供防重服务。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出根据本申请一个方面的一种表单提交方法的交互流程示意图;

图2示出根据本申请一个方面的一种表单提交方法的中的实际应用场景的交互示意图;

图3示出根据本申请一个方面的一种表单提交方法中的组件拦截器的流程示意图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本申请作进一步详细描述。

在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

图1示出根据本申请一个方面的一种表单提交方法的交互流程示意图,其中,所述方法包括客户端执行的步骤S11、步骤S12、步骤S13、步骤S14、步骤S15及步骤S16和服务端执行的步骤S21、步骤S22、步骤S23、步骤S24、步骤S25、步骤S26、步骤S27及步骤S28,具体包括如下步骤:

在服务端,为了对表单进行是否重复提交的验证,在步骤S21中,所述服务端创建一防重组件,使得所述防重组件与表单对应的业务处理等相互独立,即从表单的业务处理等抽离出来,避免业务处理等的代码与表单提交的防重组件的代码的相互干扰和入侵。

步骤S11,所述客户端响应于打开目标表单,向服务端发送防重请求,所述防重请求包括所述目标表单的标识符和打开时间,以使所述服务端中创建的一防重组件为所述目标表单生成防重信息并存储所述目标表单的所述打开时间和所述防重信息;如图2所示,客户端(对应图2中的前端)在打开目标表单时,调用创建了防重组件的服务端(对应图2中的后台应用)。

步骤S22,所述服务端接收客户端响应于打开目标表单发送的防重请求,所述防重请求包括所述目标表单的标识符和打开时间;在此,所述打开时间用于指示客户端打开所述目标表单时对应的实时时间。

步骤S23,所述服务端的所述防重组件为所述目标表单生成防重信息,存储所述目标表单的所述打开时间和所述防重信息。比如,服务端在接收到客户端发送的关于目标表单的防重请求后,所述服务端借助防重组件提供的生成防重信息的接口,获取所述防重组件为所述目标表单的防重请求生成的防重信息,在此,所述防重信息包括但不限于用于防重的字符串、防重码及防重口令等用于防重的信息,在本申请一优选实施例,将所述防重信息优选为防重码,如图2所示。

步骤S24,所述服务端将所述目标表单的防重信息返回至所述客户端。

步骤S12,所述客户端接收所述服务端返回的所述目标表单的防重信息。

步骤S13,所述客户端获取所述目标表单的业务数据,如图2所示,在获取到目标表单的防重信息后,录入所述目标表单的业务数据。

步骤S14,所述客户端向所述服务端发送表单提交请求,所述表单提交请求包括所述业务数据、所述防重信息及提交时间,以使所述服务端基于所述防重信息、所述打开时间及所述提交时间,校验所述目标表单是否重复提交;在此,可以将所述防重信息设置封装在所述表单提交请求的请求头中,请求头中的定义规则为:X-duplication-code,以便后续通过所述请求头判断是否对所述表单提交请求进行放行或防重验证。

步骤S25,所述服务端接收所述客户端发送的所述目标表单的表单提交请求,所述表单提交请求包括所述业务数据、所述防重信息及提交时间。在此,所述服务端借助spring框架的拦截器对客户端发送过来的表单提交请求进行拦截,如图3所示的组件拦截器,所述组件拦截器定义在接入的后台系统(对应服务端)提供的SDK包中,同时还提供拦截说明和拦截配置等,使得按照拦截说明和拦截配置选取组件提供的各种功能配置。比如,组件拦截器在进行拦截时,首先判断表单提交请求是否有请求头,若没有请求头,说明该目标表单不需要进行防重校验,防重组件不会对该表单提交请求进行任何干预,则服务端可以直接对所述表单提交请求进行放行,以便进入后续的应用接口,如图3所示;若所述表单提交请求携带有请求头,则需要对所述表单请求进行防重校验。

步骤S26,所述服务端通过所述防重组件,基于所述防重信息获取所述打开时间,并基于所述打开时间和所述提交时间,校验所述目标表单是否重复提交;

若否,则执行步骤S27;若是,则执行步骤S28。

其中,所述步骤S27,所述服务端处理所述业务数据,并向所述客户端返回所述目标表单的业务处理结果,即当所述目标表单未重复提交时,所述服务端才能处理所述目标表单对应的业务数据,如图2所示,并向所述客户单返回所述目标表单的业务处理结果,以使所述客户端执行步骤S15,接收所述服务端返回的所述目标表单的业务处理结果,实现对不是重复提交的目标表单的业务处理。

所述步骤S28,所述服务端向所述客户端返回用于指示所述目标表单重复提交的响应信息,即当所述目标表单重复提交时,所述服务端不能处理所述目标表单对应的业务数据,且需要向所述客户端返回用于指示所述目标表单重复提交的响应信息,如图2所示,向客户端返回提交失败等的响应信息,以使所述客户端执行步骤S16,接收所述服务端返回的用于指示所述目标表单重复提交的响应信息,实现对重复提交的目标表单的响应处理,以便客户端通过响应信息及时了解到所述目标表单已重复提交。

通过上述步骤S11至步骤S16和步骤S21至步骤S28,本申请通过将用于表单的防重从业务抽离出去,创建一防重组件,并将该防重组件封装为独立部署的组件系统,提供简单易用的接入方式,无业务代码入侵,使得高复用且稳定安全的提供防重服务。

进一步地,本申请一实施例提供的一种服务端的表单提交方法还包括:

预置一缓存数据库,所述缓存数据库与所述防重组件相互独立;

其中,存储所述目标表单的所述打开时间和所述防重信息,包括:

将所述目标表单的所述打开时间和所述防重信息存储至所述缓存数据库;

其中,所述防重组件基于所述防重信息获取所述打开时间,包括:

所述防重组件基于所述防重信息,从所述缓存数据库获取与所述防重信息对应的所述打开时间。

例如,在服务端,为了对具有防重请求的表单进行防重信息的存储,所述服务端预置一缓存数据库,比如Redis缓存数据库等,其中,所述缓存数据库与所述防重组件在服务端相互独立;其中,在所述步骤S23中,所述服务端将所述目标表单的打开时间和防重信息作为映射关系的形式,存储至所述缓存数据库中,即将防重信息作为key,将目标表单的打开时间作为value,以(key,value)的形式存入所述缓存数据库中,以便后续能够通过所述防重信息查找到所述目标表单的打开时间;在所述步骤S26中,所述服务在接收到表单提交请求后,所述防重组件基于所述表单提交请求中的请求头中携带的防重信息,从所述缓存数据库获取与所述防重信息对应的打开时间,通过缓存数据库和防重信息,实现对所述表单提交请求对应的目标表单的打开时间的查询。

进一步地,所述S26防重组件基于所述打开时间和所述提交时间,校验所述目标表单是否重复提交,具体包括:

查询并获取与所述目标表单对应的目标防重时长阈值;

计算所述打开时间与所述提交时间之间的时间差;

判断所述时间差是否大于所述目标防重时长阈值,

若是,则指示所述目标表单重复提交;

若否,则指示所述目标表单未重复提交。

例如,服务段在对目标表单进行防重校验时,首先获取与所述目标表单A对应的目标防重时长阈值T,并计算所述目标表单的打开时间t1与所述目标表单的提交时间t2之间的时间差t’,判断所述时间差t’是否大于所述目标防重时长阈值T,若是,则所述目标表单的防重校验失败,用于指示所述目标表单重复提交;若否,则表示所述目标表单的防重校验通过,用于指示所述目标表单未重复提交,实现对目标表单的表单提交请求进行是否防重有效的校验。

进一步地,本申请一实施例提供的一种服务端的表单提交方法还包括:

预置防重配置信息,所述防重配置信息包括至少一种预设表单及每种易预设表单对应的第一防重时长阈值;

其中,所述查询并获取与所述目标表单对应的目标防重时长阈值,包括:

查询所述防重配置信息中是否存在与所述目标表单对应的第一防重时长阈值,

若存在,则将所述防重配置信息中的、与所述目标表单对应的第一防重时长阈值确定为所述目标防重时长阈值;

若不存在,则将预设的第二防重时长阈值确定为所述目标防重时长阈值,其中,所述第二防重时长阈值适用于任何一种表单。

例如,预先设置防重配置信息,包括一种或多种预设表单中的每种表单对应的第一防重时长阈值,在查询防重有效时长时,首先,查询所述防重配置信息中是否存在与所述目标表单对应的第一防重时长阈值,若存在,则将所述防重配置信息中的、与所述目标表单对应的第一防重时长阈值确定为所述目标防重时长阈值;若不存在,才将系统默认设置的所述第二防重时长阈值确定为所述目标防重时长阈值,实现对所述目标表单进行防重有效时长的查找和确定。

根据本申请的另一方面,还提供了一种非易失性存储介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行时,使所述处理器实现如上述表单提交方法。

根据本申请的另一方面,还提供了一种用于表单提交的服务端,其中,该服务端包括:

一个或多个处理器;

计算机可读介质,用于存储一个或多个计算机可读指令,

当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述服务端表单提交方法。

在此,所述用于表单提交的服务端中的各实施例的详细内容,具体可参见上述服务端表单提交方法的实施例的对应部分,在此,不再赘述。

根据本申请的另一方面,还提供了一种用于表单提交的客户端,其中,该客户端包括:

一个或多个处理器;

计算机可读介质,用于存储一个或多个计算机可读指令,

当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述客户端表单提交方法。

在此,所述用于表单提交的客户端中的各实施例的详细内容,具体可参见上述客户端表单提交方法的实施例的对应部分,在此,不再赘述

综上所述,本申请的客户端响应于打开目标表单,向服务端发送防重请求,所述防重请求包括所述目标表单的标识符和打开时间;在服务端中创建有一防重组件,所述防重组件为所述目标表单生成防重信息,存储所述目标表单的所述打开时间和所述防重信息,所述服务端将所述目标表单的防重信息返回至所述客户端;所述客户端接收所述服务端返回的所述目标表单的防重信息,获取所述目标表单的业务数据,并向所述服务端发送表单提交请求,所述表单提交请求包括所述业务数据、所述防重信息及提交时间;所述服务端基于所述防重信息、所述打开时间及所述提交时间,校验所述目标表单是否重复提交,若否,则处理所述业务数据,并向所述客户端返回所述目标表单的业务处理结果,以便客户端接收所述服务端返回的所述目标表单的业务处理结果。本申请通过将用于表单的防重从业务抽离出去,创建一防重组件,并将该防重组件封装为独立部署的组件系统,提供简单易用的接入方式,无业务代码入侵,使得高复用且稳定安全的提供防重服务。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号