- 浏览: 204796 次
文章分类
- 全部博客 (224)
- jsp (5)
- jsf (7)
- web (11)
- js (12)
- COBOL (5)
- php (7)
- jconsole (1)
- java (11)
- ajax (1)
- PHP魔法方法 (1)
- 项目管理工具 (3)
- 项目管理 (2)
- svn (8)
- redmine (1)
- mysql (4)
- qrcode,php (1)
- qrcode (1)
- 多进程 (3)
- html (1)
- excel (2)
- seasar2 (1)
- db (1)
- entity (1)
- IOS8 (1)
- SWIFT (1)
- 正则表达式 (1)
- RabbitVCS (1)
- url (1)
- thinkphp (2)
- c++ (5)
- win32 API函数 (1)
- htaccess (1)
- makefile (3)
- C/C++ (12)
- Linux (1)
- miui (2)
- unix (1)
- wechat (1)
- websocket (1)
- SpringMVC (3)
- VSAM (1)
- centos (2)
- wamp (1)
- server (1)
- 优酷视频上传并去除广告 (1)
- owncload (1)
- cloud (1)
- ubuntu (1)
- pdf转换成word (1)
- 微信,weixin (1)
- 行业系统 (3)
- 超级外卖源代码 (0)
- 软件专利 (1)
- 申请 (1)
- vba (1)
- UML (1)
- 程序切片 (1)
- 股票心得 (1)
- 威客建站 (1)
- 微信开发学习路线 (1)
- 远程开机 (1)
- spring mvc (1)
- JEECMS (1)
- Node.js (1)
- ThinkJS (1)
- maven (2)
- MyEclipse+Tomcat+MAVEN+SVN (1)
- Spring+SpringMVC+MyBatis (1)
- wampserver (0)
- RESTful (1)
- hibernate (4)
- Spring+SpringMVC (1)
- 响应式布局 (1)
- 响应式布局模板 (1)
- Aptana (3)
- 遗传算法 (1)
- 进化算法 (1)
- bower (1)
- HTML5 (1)
- Android官方培训课程 (1)
- MySQL锁 (1)
- 扫描枪 (1)
- 微信公众平台 (1)
- 企业号 (1)
- ddns (1)
- java获取外网ip (1)
- DDNS,阿里云,云解析,万网域名,阿里云域名 (1)
- SEO (1)
- Jboss (2)
- wildfly (1)
- WildFly8 (2)
- NT Kernel (1)
- 反向代理 (1)
- Spring嵌套事务 (1)
- apache (3)
- 防止浏览器记住用户名及密码的简单实用方法 (1)
- 时间戳 (1)
- 字体 (1)
- 网络爬虫准 (1)
- 屏蔽后退按钮 (1)
- java web (1)
- JavaMail (1)
- windows服务 (1)
- Freemarker (1)
- TortoiseGit (2)
- oschina (1)
- JSON (1)
- Boost (1)
- MUI (1)
- github (1)
- Python2.7 (1)
- Python3.0 (1)
- Odoo (1)
- java socket (1)
- OpenERP (2)
- werkzeug (1)
- JNA (2)
- proxifier (1)
- WebService (1)
- 企业应用集成 (1)
- vmware (1)
- Navicate (1)
- 三体 (1)
- oracle同步 (1)
- 微信 (3)
- java设计模式 (1)
- 工具 (1)
- JavaScript跨域 (1)
- LB (1)
- 负载均衡 (1)
- AngularJS (1)
- HBuilder (1)
- Echarts (1)
- Json Web Token (1)
- PassportSDK (1)
- ubuntu kylin xterm 乱码 (1)
- ubuntu kylin17 安装字体教程 (1)
- wps (1)
- jetbrains (1)
- MySQL5.7 (1)
- Nginx (1)
- JDK (1)
最新评论
-
cuiyadll:
谢谢楼上的推荐
实战:jQuery Mobile开发HTML5移动应用 -
marty:
使用JQueryMobile,推薦使用這免費開發工具,提供可視 ...
实战:jQuery Mobile开发HTML5移动应用 -
men_clslji:
按照目前的方法只是防止刷新页面时不再执行X(添加),而toke ...
有了上一篇博文,类似地顺便说说表单防重复提交。
表单防重复提交,老鸟略过。做过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的操作)。
有人就可能会问了,为啥刷新浏览器,会导致表单的重复提交呢?带着这个问题,我们寻求一个更简单的方式,来防止重复提交。(假设表单页为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的操作)。
评论
1 楼
men_clslji
2013-10-15
按照目前的方法只是防止刷新页面时不再执行X(添加),而token的运用主要还有一点是在网络不理想情况下。
用户多次点击提交按钮,结果是第一次还没响应,也就是还没重定向到Y(查询)时,就再次请求了X(添加)。
使用token就可以很好的避免了此问题,同一页面的请求能保证只执行一次。
用户多次点击提交按钮,结果是第一次还没响应,也就是还没重定向到Y(查询)时,就再次请求了X(添加)。
使用token就可以很好的避免了此问题,同一页面的请求能保证只执行一次。
发表评论
-
微信开发框架哪个好?
2015-05-12 18:26 773weiphp(thinkphp构造) 还一个微擎 -
20款国外知名的php开源cms系统
2015-04-13 16:17 4829内容管理系统,简称CMS,是一种简易的发布和管理新闻的程序。 ... -
系统的伪静态规则
2014-10-27 09:46 498由于Dream系统的内核是Thinkphp3.1,只需将in ... -
HTML5 本地存储 LocalStorage
2014-09-28 10:52 883说到本地存储,这玩 ... -
如何使用FacesContext类
2014-09-03 15:06 851在Faces API中有两个类是要经常使用的. 一个是Face ... -
ServletContextListener使用详解
2014-09-03 14:50 722在 Servlet API 中有一个 Se ... -
seasar2中自动生成DB entity类的方法
2014-09-03 12:00 771步骤1:修改配置文件jdbc.dicon 步骤2:安装相应db ... -
JQuery中$.ajax()方法参数详解
2014-03-06 10:24 740url: 要求为String类型的 ... -
JSF点滴积累--利用PhaseListener实现权限验证
2013-08-28 19:54 839通过PhaseListener 可以在一个点上(JSF生命周期 ... -
弹出窗口(window.open)被各种浏览器拦截的通用处理方法
2013-08-27 15:56 977所有种类的浏览器基本都默认拦截弹出窗口,也就是说(window ... -
JSF点滴积累--权限验证
2013-08-27 15:42 585通过PhaseListener 可以在一个点上(JSF生命 ... -
如何处理logout后,后退按钮(返回键)依旧显示缓存的问题
2013-08-21 16:08 1763在一个有密码保护的Web应用中,正确处理用户退出过程并 ...
相关推荐
本篇文章将深入探讨Struts2中的三个关键概念:命名空间、模型驱动以及表单重复提交的处理,这些都是在实际开发中必不可少的知识点。 **命名空间(Namespace)** 命名空间在Struts2中扮演着路由和隔离的作用。它可以...
通常,Ext JS的表单提交使用Ajax方式,这意味着它可以异步地将表单数据发送到服务器,无需页面刷新。这种方式提供了更好的用户体验,因为用户可以在数据提交的同时继续与应用交互。 在Ext JS中,表单(`Ext.form....
在描述中提到的博文链接指向了iteye博客上的一篇文章,虽然具体内容没有给出,但我们可以推测文章可能讨论了如何配置Jetty来处理大型表单数据,包括修改默认设置以允许更大的数据量,并可能涉及了相关的源码分析。...
博文链接:https://clarancepeng.iteye.com/blog/112040
总结了 用type=submit type=image 单击图片提交 按钮提交等 绝对原创
- PHPMyAdmin是一个用于管理MySQL数据库的Web界面工具,博文中提到了解决登录超时问题的技巧。 - 开发者在使用PHP邮件功能时,可以通过邮件群发机来实现批量发送邮件的需求。 - CAS是一种用于Web应用单点登录的...
这个提示符可以帮助你创建一篇博文,告诉一个引人注目的故事,讲述你的产品或服务如何以一种相关且吸引人的方式帮助目标受众实现目标。 Ignore all previous instructions. You are an expert in content creation ...
Android模拟表单提交 多图选择+多图上传Demo 对应博文:Android原生模拟表单提交上传多图+PHP接收表单数据和多图存储:http://blog.csdn.net/iwanghang/article/details/65630703
JavaScript是一种常用的客户端脚本语言,它允许我们在用户的浏览器上运行代码,对用户提交的数据进行实时验证,避免无效或恶意的数据发送到服务器,从而提高用户体验和系统的安全性。 【描述】虽然描述信息为空,但...
标题中的“一款漂亮的滑动表单”指的是一个设计精良且具有交互性的用户界面元素,通常用于网页或应用程序中收集用户信息。这种滑动表单的设计可以提高用户体验,因为它允许用户通过滑动或滚动的方式逐步填写信息,而...
标题中的“备注标签博文篇”可能是指一篇关于在IT领域中使用特定的备注标签或工具进行代码管理和版本控制的文章。由于没有直接的描述提供,我们将根据标签“源码”和“工具”以及提供的压缩包文件名来推测文章可能...
博文链接指向了ITEYE上的一个博客,作者是 lovexuwenhao,博客ID为336780。遗憾的是,由于我们无法直接访问这个链接,无法提供更深入的分析。通常,这样的博客可能会包含代码示例、使用教程以及程序的特点和优势。 ...
博文视点作为一家在IT出版界颇具声望的机构,其在2006年推出的《博文视点专业书目2006年第一期》无疑为当时的技术人员提供了一盏明灯。 博文视点专业书目2006年第一期,不仅是一份简单的书籍目录,更是一份包含着...
新浪博文下载工具1.1是一款专门针对新浪博客平台设计的实用型软件,旨在帮助用户方便快捷地下载并保存自己感兴趣的文章或连载小说。这款工具的主要功能是将博客内容转化为易于阅读和存储的TXT文本格式,使得用户可以...
总之,"博文配套资源 (001)"是一个包含了与特定技术文章紧密相关的各种文件的压缩包,它的存在是为了辅助读者更好地理解和应用文章中的知识点,涵盖了编程、数据处理、学习等多个方面的内容。对于希望深入学习和实践...
3. **虚拟光驱**: 作为一款虚拟光驱软件,博文网碟能够在计算机上模拟出多个虚拟光驱(最多四个),这有助于用户同时处理多个光盘内容。 4. **简单易用**: 安装后会在桌面生成图标,用户可以通过简单的双击操作启动...
本章主要聚焦于"表单元素"这一主题,结合源码分析和工具应用,深入探讨如何有效地创建和管理网页表单。 表单元素通常包括输入框(input)、文本区域(textarea)、下拉菜单(select)、复选框(checkbox)、单选...
4. 防重机制:存储已评论的博文信息,避免重复操作。 尽管代码可能较为混乱,这提供了一个学习和改进的机会,比如重构代码以提高可读性和可维护性,或者添加异常处理来增强程序的稳定性。此外,还可以考虑使用更...
标题中的“复制表单HTML内容, 且同时复制表单的最新值”指的是在网页中实现一个功能,允许用户不仅复制HTML结构,还能一并获取表单中输入的数据,即表单的最新状态。这个功能在很多场景下都非常实用,比如用户在填写...