借鉴文章出处:https://www.cnblogs.com/wuyx/p/6118484.html
在观看了上一篇 文章后,出于积累,我复述一遍,并且加入自己的理解。
关于表单重复提交,这种现象就是用户在使用软件时连续且快速得多点了几下提交按钮,或者提交后故意或者无意返回之前那个提交页面再次提交而导致的表单重复提交现象,这在web项目这一块比较常见,也是一个比较棘手的问题。以下是几种常见的解决方式:
一、数据库设置区分字段
比如在做提交前先用select count(id) from 表名 where id = #{id};查询一遍是否存在同样id的信息,如果有就返回重复提交,如果没有就提交成功,再跳转到下一个页面。
或者像连接文章所说那样,设置区分字段,在数据库建表的时候在id字段添加主键约束,账号,名称的信息添加唯一性约束。确保数据库只可以添加一条数据。这个要在设置表的时候就考虑到,是相对来说比较好的一个方式。
二、js控制
在提交后将提交按钮隐藏,这样就没办法调用function的提交方式了,自然而然不会重复提交,但是这要考虑到用户浏览器是否允许加载js,如果不允许的话那么这个方法是没有用的。
三、prg模式
post/Redirect/get,这个方式是在你post提交了表单以后重定向到提交后的页面。