首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

表单防止重复提交

表单防止重复提交

日常开发中经常会用到表单提交,如果表单没有做防重复提交,可能会引起系统业务逻辑异常,导致系统数据错乱

一、引起表单重复提交有以下几种常见场景:

重复点击提交按钮。包括恶意的连续点击提交按钮,或因为网络慢、服务器处理速度慢等引起的用户多次点击。

表单提交处理完后,通过浏览器的后退按钮回到原页面再次点击提交按钮。

通过点击浏览器的刷新按钮,导致表单重复提交 。

通过浏览器的历史记录,获取表单提交的URL地址,再次访问。

下面我给出一套常用的解决方案,前端用javascript锁防止重复点击,后端验证session里面的token值防止重复提交

二、前端

String token = UUID.randomUUID().toString();

session.setAttribute("formToken", token);

三、服务端

String Token1 = request.getParameter("formToken");

String Token2 = (String) session.getAttribute("formToken");

if (Token1 != null && Token1.equals(Token2)) {

// 处理表单提交 ...

// 删除标识符

session.removeAttribute("formToken");

}else{

// 重复提交,给出错误提示

}

四、总结

一般情况下采用JS脚本方式和服务端方式两种结合已可防止表单重复提交,针对特殊业务要求的可采用数据库唯一性约束限制等方式来强制保证业务逻辑上的数据唯一要求。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OLUyd7R__xDohi4GzcKcoC2A0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券