关于防止表单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:
在数据库里添加约束。在数据库里添加唯一约束或创建唯一索引,防止出现重复数据。这是最有效的防止重复提交数据的方法。
关于防止表单form重复提交的方式相关推荐
- 利用beforeSend实现提交加载中、form表单的重复提交等前端功能
前文 在用JQ+bootstrap写前端的时候,有时需要实现点击按钮后失效的功能,比如下载按钮,为了避免网络延迟而引起的页面不及时跳转,让用户多次点击按钮,造成的服务器压力和用户体验就都不友好.发 ...
- 表单的重复提交问题解决方案
1.在我们的web开发中,常常会遇到表单的重复提交问题,那么我们的解决方案有两种:①重定向:response.sendrediect(); ②token的使用,即做个标记 下面写一个token的例子: ...
- Spring MVC表单防重复提交
转载自 Spring MVC表单防重复提交 利用Spring MVC的过滤器及token传递验证来实现表单防重复提交. 创建注解 @Target(ElementType.METHOD) @Retent ...
- 关于表单防重复提交一些东东
前阵子弄了些表单防重复提交的东西,想整理整理,免得下次要用时再四处去找,其实这里的东西还是挺简单的. 原理: 在Session中保存一个表单的唯一编号,将该编号放在一个隐藏域中,同其他数据一同提交.在 ...
- uniqid php 重复_在php使用隐藏字段和uniqid来实现表单的重复提交
在php中,最简单,也是做常用的放发来放置表单重复提交的方法就是设置隐藏域的来实现,在php有一个uniqid();函数,他可以生成唯一的标示符,这样我们就可以通过判断这个标示符来判断表单是不是处于重 ...
- 如何防止表单的重复提交
表单重复提交是在多用户Web应用中最常见.带来很多麻烦的一个问题.有很多的应用场景都会遇到重复提交问题,比如: (1)点击提交按钮两次. (2)点击刷新按钮. (3)使用浏览器后退按钮重复之前的操作, ...
- 表单防重复提交拦截器
表单防重复提交 http://blog.icoolxue.com/submitted-by-spring-mvc-to-prevent-data-duplication/
- 如何防止form表单的重复提交
一.出现form表单重复提交问题 1.点击提交按钮两次. 2.点击刷新按钮. 3.使用浏览器后退按钮重复之前的操作,导致重复提交表单. 4.使用浏览器历史记录重复提交表单. 5.浏览器重复的 HTTP ...
- js防止表单的重复提交
在表单提交的时候,用户有时候会重复的点击提交按钮,会导致多次提交,产生重复数据.我们应该怎么办了?一般想法是:通过attachEvent在 form的onsubmit事件中写一个方法,每次触发该事件时 ...
最新文章
- 机器学习数学基础系列|凸优化——开启新世界的大门(上)
- AcWing 1068. 环形石子合并
- sudo 命令报错的解决方法
- stl中copy()函数_std :: copy_if()函数以及C ++ STL中的示例
- creo外观库_Proe软件技巧,颜色库下载及其使用方法揭晓
- 九毛九集团java_JAVA数组课后作业
- node mysql 模块化_Node.js中的模块化
- python模型参数估计_python – 从scipy.optimize.curve_fit获取与参数估计值相关的标准错误...
- 智能制造与MES系统的内在联系
- 如何定位到服务器CPU飙高的原因
- 已设定选项 ‘readonly‘ (请加 ! 强制执行)
- iphone7一晚上掉电50%_苹果7待机一晚掉电多少
- python 跳过_如果文件已经存在,Python将跳过一个函数
- 设置网页宽高的比例为16:9
- 自动计算所有包围盒的中心点
- ARM与NEON加速指令
- ESP8266 上电 boot 模式
- python 网络爬虫
- vue2与vue3的区别
- MOOC南京大学操作系统第五次单元测验
热门文章
- c语言中的循环移位函数,C ++中循环移位(旋转)操作的最佳实践
- #地形剖面图_备战中考 地理图表判读——地形剖面图
- 安卓rtmp推流app_直播-腾讯云推流-sdk 播放地址不正确的解决方案---蜻蜓系统-uniapp-flutter通用...
- layui的表单控件的input文本框赋值
- activiti 解压zip java.lang.IllegalArgumentException: MALFORMED 错误
- 计算机基础知识运算符,计算机基础运算符
- mac上如何安装oracle,在mac上安装oracle instant client 和 sqlplus
- 转移性乳腺癌的基因组图谱突出了突变和特征频率的变化
- python函数参数冒号_Python3 - 参数中的冒号和箭头
- 数字信号处理--7.5--FIR数字滤波器