当前位置: 代码迷 >> Java Web开发 >> 防止重复提交发表文章的简略妙招
  详细解决方案

防止重复提交发表文章的简略妙招

热度:217   发布时间:2016-04-16 21:51:21.0
防止重复提交发表文章的简单妙招
其实可以采用逻辑增加的方法.在表中加上一个state状态字段,该字段只有state=1的时候文章才会在页面上显示.
当进入发表文章的界面的时候,会在表中新增一条记录,但是此时记录的状态state=0,因此文章不会在页面上显示,当提交文章的时候,使用update语句将状态变成state=1,当然要同时update文章的标题和内容.
我觉得这个方法能够从逻辑上彻底屏蔽类似在论坛中重复发表文章的情况,因为它发表文章是用的update语句,而不是insert语句。提交1万次也是update 1万次,操作的仍然是一条记录而不是多条记录.至于一开始进入页面即便刷新多次,由于state=0,不会显示到页面上,所以也不会出现重复提交的情况.
这个方法抓住了本质:重复提交原因之一是操作是一次性的,而这一次性操作会被无意重复使用。而我把提交分成了2个步骤,insert和状态state=1.一般失误重复提交最多只操作一个,所以采用我这种方法一般不会出现重复提交的情况.
当然这种方法的弊端就是有可能会有因为没有提交而在表中出现的state=0的大量垃圾记录,不过这个问题也容易被解决,只需要每隔一段时间清理一下长时间没有被提交state=0的记录即可。比如每天晚上12点清理昨天之前的state=0的记录.
这个方法还可以利用在其它地方比如银行转账的情况,只有state=1的转账行为有效即可.
------解决思路----------------------
数据库操作增加了一倍,高并发下,这种方案估计不行的
------解决思路----------------------
··· 你这没防住啊 都入了数据库了 
防重复提交得前面就防住