当前位置:首页 > 开发 > Web前端 > 前端 > 正文

有了上一篇博文,类似地顺便说说表单防重复提交。

发表于: 2013-08-21   作者:cuiyadll   来源:转载   浏览次数:
摘要:     表单防重复提交,老鸟略过。做过web的应该都知道,当submit一个表单后,再按浏览器的刷新(F5),表单会再次提交,这样并不是我们想看到的。看了一下华佗的网站,他用的是token机制防重复提交(方法如下:进入页面之时,随机一个数值,可以是Math.random(),也可以是取当前时间…等等。将这个值放入session.setAttribute("t
    表单防重复提交,老鸟略过。做过web的应该都知道,当submit一个表单后,再按浏览器的刷新(F5),表单会再次提交,这样并不是我们想看到的。看了一下华佗的网站,他用的是token机制防重复提交(方法如下:进入页面之时,随机一个数值,可以是Math.random(),也可以是取当前时间…等等。将这个值放入session.setAttribute("token",刚才的随机值),同时也放入表单的一个隐藏文本域<input type=hidden name=token value=刚才的随机值/>。当用户提交的时候,后台首先判断session中的token和表单中的token是否一致,如果相同,则移除session.removeAttribute("token"),允许提交。待用户F5刷新的时候,就不一致了,则说明是重复提交。)不知道这样说,大家能不能明白。

    有人就可能会问了,为啥刷新浏览器,会导致表单的重复提交呢?带着这个问题,我们寻求一个更简单的方式,来防止重复提交。(假设表单页为A.jsp,处理添加数据.并查询数据servletB,处理完forward到C.jsp展示所有数据。)按照这样的写法,在跳到C后,按F5,肯定是会重复添加数据的。首先,让人想到的是将forward改为redirect,重定向。这样的确不会重复提交了,但是新问题又来了:C中显示不了数据,因为重定向后,request就拿不到B查询的数据了。好,我们又会想到,B中,用session存储查询好的数据。嗯,不得不承认,这样的确也达到了效果,不过session这玩意,听说要少用。所以,我们不能就此罢休!最后总结了一个比用token方便,也不用session来存数据,的方案:(把servletB删掉,拆成两个servlet:X(负责添加)和Y(负责查询),思路:A->[提交]->X->[重定向]->Y->[请求转发]->C)按照这样的步骤,C能拿到Y查好的数据,而且F5刷新,也不会重复提交(因为多了一步X->Y的操作)。

有了上一篇博文,类似地顺便说说表单防重复提交。

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
防止表单重复提交 介绍了使用 redirect 技术防止表单提交,但是 redirect 解决不了后退到表单页面时
via: http://blog.sina.com.cn/s/blog_7ffb8dd50101411g.html 一、造成重复提交主要的两个原因: 在
看到一篇关于防重复提交的文章,记录一下: #防重复处理总结 ##背景 在业务开发中,我们常会面对防
1.什么叫表单重复提交: 所谓表单重复提交,是指用户通过多次点击提交按钮或多次刷新表单提交页面等造
在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能
struts2的限制表单重复提交,除了可以限制提交外,还可以让程序员手动指定表单重复提交后,页面转到哪去
一、重复提交的处理方式 1.在进行请求之后重定向到查询或者其他不操作数据库的请求 2.将页面事件执
session案例-防止表单重复提交 l不足:但用户单击”刷新”,或单击”后退”再次提交表单,将导致表
概述 有些时候,我们在想某个网页提交了信息之后,由于某些原因,我们会重复点击提交,或者刷新页面
1、在网络延迟会或服务器反应过慢的情况下让用户有时间点击多次submit按钮导致表单重复提交 2、用户
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号