想知道如何正确地保证表单提交的幂等性吗?(一)

简介: 哈喽,大家好,我是指北君。关于表单的提交相信作为一个后端开发接触过不少,本文将介绍如何解决表单重复提交的问题。

1、表单提交案例

我们通过一个 jsp 页面提交表单到 servlet 进行处理。项目结构如下:

90.jpg

首先看 JSP 页面:from01.jsp

90.jpg91.png


接着我们看 servlet 操作:

92.png

我们将该项目部署到 tomcat 服务器,然后启动服务器,在浏览器中输入相应地址,点击表单中的提交按钮,后台正常情况下应该打印出提交表单的字样,然后前台页面输出提交成功。

93.gif

2、表单重复提交的三种情况

上面我们演示的是正常点击提交的情况,但是实际上用户可能进行多次提交的操作。

①、多次点击提交按钮

这是最明显的一种情况,可能由于我们点击一次按钮后,系统后台对提交操作进行处理有一定的延时,于是页面停在表单提交页面。而当前用户不知道,以为没有提交表单,于是又进行按钮点击,造成表单多次提交。

94.gif

②、用户提交表单成功之后不断点击浏览器【刷新】按钮

95.gif

③、提交表单成功后,点击浏览器【回退】箭头,回到表单提交页面,然后重新点击提交按钮

96.gif

相关文章
|
SQL 缓存 NoSQL
接口的幂等性设计和防重保证,详细分析幂等性的几种实现方法
本篇文章详细说明了幂等性,解释了什么是幂等性,幂等性的使用场景,讨论了幂等和防重的概念。分析了幂等性的情况以及如何设计幂等性服务。阐述了幂等性实现防重的几种策略,包括乐关锁,防重表,分布式锁,token令牌以及支付缓冲区。
6706 0
接口的幂等性设计和防重保证,详细分析幂等性的几种实现方法
|
19天前
|
设计模式 缓存 前端开发
什么是幂等性?四种接口幂等性方案详解!
本文深入分布式系统中的幂等性问题及其解决方案,涵盖数据库唯一主键、乐观锁、PRG模式和防重Token等方法,关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
什么是幂等性?四种接口幂等性方案详解!
|
17天前
|
缓存 供应链 数据库
如何确保 PUT 请求的幂等性?
【10月更文挑战第25天】在实际应用中,需要根据具体的业务场景和系统架构选择合适的方法来实现PUT请求的幂等性,以满足应用的需求。
|
1月前
|
数据库
什么是接口幂等性?如何保证接口幂等性?
接口幂等性(Idempotency)是指同样的请求被重复执行多次,产生的结果与执行一次的结果相同。换句话说,接口无论被调用一次还是多次,系统的最终状态保持不变。
106 5
|
1月前
|
存储 缓存 安全
如何保证接口幂等性,幂等性到底是干什么的
本文介绍了幂等性原则及其在程序中的应用。首先定义了幂等性,即无论执行多少次,结果不变的特性,并区分了幂等与非幂等操作。接着详细探讨了实现幂等性的策略,如使用唯一标识符、幂等性标记字段、乐观锁版本控制等。最后,通过Java示例展示了如何实现无状态幂等操作,并强调了幂等性在分布式系统和高并发场景下的重要性。
|
3月前
|
SQL 前端开发 NoSQL
关于幂等:大厂如何解决幂等问题?
为确保分布式系统中接口的幂等性,防止重复下单及更新数据时出现ABA问题,可采取以下措施:首先,每个请求需具备唯一标识符,如订单ID,确保同一订单ID仅能成功处理一次。其次,处理请求后需记录状态标识,如在数据库中记录支付流水。接收请求时检查是否已处理,利用数据库的唯一性约束防止重复操作。例如,支付前插入支付流水记录,若订单ID已存在,则阻止重复支付。此外,为解决ABA问题,可在订单表中增加版本号字段,更新数据时需验证版本号一致性并同步递增版本号,确保数据正确性及更新操作的幂等性。
|
6月前
|
数据库 索引
常见保持请求幂等的方式
常见保持请求幂等的方式
48 0
|
缓存 NoSQL JavaScript
8 种方案解决重复提交问题,还怕没有适合你的?
8 种方案解决重复提交问题,还怕没有适合你的?
|
前端开发 NoSQL 数据库
幂等性与防重的区别
自己的一点小理解
500 0
|
前端开发 NoSQL Java
如何保证接口幂等性?一口气说了12种方法!
幂等性原本是数学上的概念,用在接口上就可以理解为:**同一个接口,多次发出同一个请求,必须保证操作只执行一次**。调用接口发生异常并且重复尝试时,总是会造成系统所无法承受的损失,所以必须阻止这种现象的发生。
539 0