一个简单快速的办法
通用又简单的的办法是从服务器端获取令牌,将其存到缓存中,调用接口时,根据获取令牌,判断是否属于重复提交,缓存最后使用redis分布式缓存,防止如果应用是分布式部署,两次提交提向了两个不同的节点,导致无法判断重复
实现代码
使用jedis.setNx方法,返回true则表示首次提交,再处理逻辑,否则提示已提交过,需要重新刷新页面,再次提交。
在struts里也有这样的方法,是利用的session令牌做的,用户刷新页面,session会存一个令牌,页面有个hidden标签存放这个令牌,提交的时候,会带上,如果相同则处理逻辑,不同表示已提交过,这种方法也可以实现。