1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 关于防止表单form重复提交的方式

关于防止表单form重复提交的方式

时间:2020-06-01 18:07:42

相关推荐

关于防止表单form重复提交的方式

表单重复提交:

1.第一种:添加以后刷新页面(刷新的是Servlet)

2.第二种:重复点击提交按钮.

* 使用令牌机制:(防止表单重复提交)

* 在表单页面中 生成一个令牌

* 将这个令牌保存在session中一份,保存在表单隐藏字段中一份.

* 当表单提交的时候,获得到session中令牌和隐藏字段中令牌.

* 将sesion中的令牌移除了.

防表单重复提交的原理:

原理:令牌机制.

* 在JSP页面中,生成了一个随机的字符串,将字符串保存到session中一份,放到表单的隐藏字段中一份,提交,提交到后台之后,获得到两份随机字符串,将session中的清空.(保证这个令牌只能使用一次,提交一次).刷新页面,session中令牌已经失效了.

Struts2防表单重复提交.

* 使用表单标签:<s:token/>

* 在后台配置一个拦截器.token的拦截器.(这个拦截器没有在默认的栈中.)

* 步骤:

* 1.JSP页面表单中使用:<s:token/>

* 2.在struts的配置文件中加入引入token拦截器的代码:

<interceptor-ref name="defaultStack"/>

<interceptor-ref name="token"/>

* 3.需要在<result>配置一个name=”invalid.token”的跳转页面.(表单重复提交跳转的页面)

其他方式1:

禁掉提交按钮。表单提交后使用Javascript使提交按钮disable。这种方法防止心急的用户多次点击按钮。但有个问题,如果客户端把Javascript给禁止掉,这种方法就无效了。

其他方式2:

Post/Redirect/Get模式。在提交后执行页面重定向,这就是所谓的Post-Redirect-Get (PRG)模式。简言之,当用户提交了表单后,你去执行一个客户端的重定向,转到提交成功信息页面。

这能避免用户按F5导致的重复提交,而其也不会出现浏览器表单重复提交的警告,也能消除按浏览器前进和后退按导致的同样问题。

其他方式3:

在数据库里添加约束。在数据库里添加唯一约束或创建唯一索引,防止出现重复数据。这是最有效的防止重复提交数据的方法。

本文转自SummerChill博客园博客,原文链接:/DreamDrive/p/4090794.html,如需转载请自行联系原作者

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。