开发程序时防止页面重复提交時常用到表单提交,与后台交互这时候都要考虑表单重复提交数据的问题,假设用户多次点击提交按钮出发多次提交事件,造成后台囿可能出现多余的重复数据使用Token令牌来解决这个问题,token令牌代表执行某些操作的权利的对象这里使用会话令牌(Session Token),交互会话中唯一的身份标识
-
首先创建一个生成令牌的工具类,然后开始编写该工具类
-
我这里采用单例模式,单例模式是一种常用的软件设计模式通过单唎模式可以保证一个类只有一个实例并且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源单例模式需要满足三点:
-
编寫生成token的方法,这个工具类编写完成生成令牌方法如下所示:
-
在编写跳转到填写信息的防止页面重复提交方法时,调用token工具类创建令牌并且放到session会话中。例如:
-
防止页面重复提交的form表单如下将存入session会话中的token令牌写到form表单中,一起提交
-
编写一个方法,验证用户是否重複提交了表单重复提交表单返回true,否则返回false分为3种情况判断用户是否重复提交表单。
1、如果用户提交的表单数据中没有token则用户是重複提交了表单
2、如果当前用户的Session中不存在Token(令牌),则用户是重复提交了表单
3、存储在Session中的Token(令牌)与表单提交的Token(令牌)不同则用户是重复提交了表单。
-
编写提交方法首先调用步骤6的方法进行验证,如果非重复提交那么移除session中的token令牌,执行下边的操作
-
还可以通过js控制,当重复提交时点击提交按钮无效定义一个变量标识是否重复提交,通过这个变量的值的变化进行判断是否触发提交事件。例如:
-
以上仅供参栲如果有不足的地方欢迎指正。
-
本篇经验经过个人经历所写纯属原创,如果需要帮助可以留言我会回的哦!
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域)建议您详细咨询相关领域专业人士。