java 防止表单的重复提交-令牌机制

没有完整的进行一次请求页面->提交页面的过程而完成数据提交 
一.造成重复提交的原因:
   1.由于服务器缓慢或网络延迟的原因,重复点击提交按钮
   2.已经提交成功,刷新成功页面(forward)
   3.已经提交成功,通过回退,再次点击提交按钮

注意:
回退后,刷新表单页面,再次提交这时不是重复提交,而是发送新的请求
      在Firefox下,重复提交到同一地址无效

能用URL重定向就使用URL重定向


二.表单重复提交的问题的实质:
      没有先请求页面,就直接在提交数据
      解决方案:令牌机制

三.基本操作:

      在后台先生成一串随机数,然后将随机数放到Session,同时在JSP页面中使用EL表达式将Session中的数据放在表单的隐藏域中。提交表单后,如果jsp页面input标签中隐藏域的提交的valueye和后台session中拿到

的session中RandomCode一致,就表示不是重复提交,并且清空session.如果不一致就是重复提交。

JSP页面:input< type='hidden',name='randomCode' value ='RandomCode_in_Session'>

Serverlet1或者JSP页面:

            <%    String randomCode = UUID.Random.toString     session.setAttribute("RandomCode_in_Session")                %>

Servlet2: 获取input标签传递后台的值和从session中的值比较,相同清空,不是重复提交                                                                                 session.remove("RandomCode_in_Session"),不相同就是重复提交,return;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值