WEB防重复提交的方法

1.POST-REDIRECT-GET

步骤:

1.controller中post请求执行后不调用forward方法直接去成功页面,而是把数据放到session里面,然后调用redirect方法让浏览器重新提交一个get请求到中间controller。

2.中间controller把session里面的值,取出来放到request里面,再把session里面的值remove,然后去到真正的成功页面,同时可以加判断,如果从session中一开始都没取到值就去到一个提示重复提交的页面

spring3.1之后可以用flashmap来实现,spring中有一个flashmapmanager,在请求的生命周期中自动处理了第二步里面的动作,无需自己处理

有一些缺点,会影响浏览器的刷新和后退行为

具体例子参考:http://www.tikalk.com/java/redirectattributes-new-feature-spring-mvc-31

2.synchronization token

步骤:

1.在页面上设置隐藏域,在第一个get请求时后台生成一个token,保存到session中,同时设置到页面隐藏域中

2.当form post以后,将隐藏域和session中的token做比较,如果相同,则remove session中的token,再进行后续处理

典型的例子struts2

3.客户端js

用js实现表单只能提交一次或者提交后按钮变灰,但是不安全,可以自己创建form绕开js自己提交

转载于:https://my.oschina.net/heatonn1/blog/172708

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值