关于防止表单表达重复提交的几个解决方法

表达重复提交的问题,是B/S系统开发中经常容易被忽视,但常常又令程序员头疼的一个问题。根据墨菲定律,如果你不做防止重复提交的机制,那些用户行为往往就会给你带来麻烦,然后就等着产品经理的抱怨吧。下面,我就总结了几条常见的关于B/S系统中防止表单重复提交的几个办法:

1.页面上控制。怕用户点击提交按钮2次?用javascript控制下吧;怕用户后退导致重复提交?那就干脆打开个新页面吧。总之你要设想到用户在页面上的所有可能的操作,把这些容易导致BUG的操作消灭的萌芽中。

2.session控制。如果实在避免不了用户的重复提交操作,那就加个token吧。具体代码网上有,原理是在用户第一次提交的时候生成一个令牌存在session里,每次提交的时候比对下,如果2次提交的token一样的话,说明是重复提交了。

3.跳转控制。一般表达提交的时候,我会了返回方便经常使用forward(内部重定向)而不使用redirect(外部重定向),因为根据返回的结果要给一些错误提示什么的。但是使用内部重定向的话,会有个问题,就是用户提交完以后点击浏览器的刷新按钮,上一次的提交操作就会被重新发送一次(虽然浏览器有提示,但是你不能指望用户会看提示)。所以更好的办法是,提交后使用外部重定向的方法到下个页面,这样用户刷新也是刷新下一个页面的打开操作了。

PS.也许有人会问,使用外部重定向的话,那返回的result参数怎么传,链接后面带参数的话既难看又不方便。我推荐使用cookie来保存结果状态,临时保存,用完即清,很方便。

转载于:https://www.cnblogs.com/xujanus/p/3816173.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值