教你解决表单重复提交问题,增加系统数据准确性,避免脏数据
总结:表单重复提交是个什么东西呢?就是用户快速点击两次,而保存了两次,于是数据出现了两条 重复数据,造成了不必要的麻烦和困扰,这就是脏数据。
解决办法有很多,我这里 列举几种思路
1.页面置灰,第一次点击后就置灰 等处理响应 后在按钮还原 (前端处理)
2.以前的传统模板 开发 利用session ,进入提交页面 产生一个token ,提交的时候 页面也必须带上 token,比对token,处理完成删除 token,第二次请求由于处理完成 token已经删除了所以 第二次请求不会处理业务
3.前后端开发,比如在一个页面上点击新增按钮的时候,去调用token接口(可以用uuid 等唯一性的存在缓存里面),提交的保存的时候 token 一起提交,通2的思路 一样,就是杂执行保存操作之前的一步 产生一个token
4.从后端不需要前端调用token 接口什么的
4.1 数据库唯一键,捕获异常 返回前端请勿重复提交
4.2 分布式锁(分布式缓存也行,就是查里面有没有同样token 有(拒绝处理),没有放进去 比对 处理完业务删除,类似session 处理 又不太一样),方法执行之前获取锁(key 的生成规则可以自己想如 md5(类名+方法名+提交参数+userId) ) 获取锁后执行,没得到锁直接提示请勿重复提交
推荐试用 4.2 +4.1 一起使用 如果前后端分离,具体实现源码参考我的代码库自己去找。
elk