关于防止表单form重复提交的方式-阿里云开发者社区

开发者社区> 技术小哥哥> 正文

关于防止表单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博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/4090794.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java for循环删除ArrayList重复元素陷阱,Iterator迭代器遍历删除重复元素
Java for循环删除ArrayList重复元素陷阱,Iterator迭代器遍历删除重复元素 这是一个一不留神就犯下错误的Java列表ArrayList重复删除元素陷阱,并且问题比较隐蔽。
1722 0
elementui el-form 支持回车提交
版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82711366 ...
4801 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4624 0
spring mvc 防止重复提交表单的两种方法,推荐第二种
第一种方法:判断session中保存的token 比较麻烦,每次在提交表单时都必须传入上次的token。而且当一个页面使用ajax时,多个表单提交就会有问题。 注解Token代码: package com.thinkgem.jeesite.common.repeat_form_validator; import java.lang.annotation.Elem
3346 0
如何防止表单重复提交
 几种防止表单重复提交的方法   1.禁掉提交按钮。表单提交后使用Javascript使提交按钮disable。这种方法防止心急的用户多次点击按钮。但有个问题,如果客户端把Javascript给禁止掉,这种方法就无效了。   我之前的文章曾说过用一些Jquery插件效果不错。   2.Post/Redirect/Get模式。在提交后执行页面重定向,这就是所谓的Post-Redirect-Ge
1913 0
自己存档:ajax 动态提交form
$.ajax({                    cache: true,                    type: "POST",                    url: "/postcomment",                    data: $('#pinglunform').
495 0
使用jquery提交form表单并自定义action
$(function () { $("#btn").click(function () { var usercode = $("#UserCode").
608 0
2010
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载