解决方案:使用重定向跳转到目标页面
2)提交表单后 , 由于网速差等原因 , 服务器还未返回结果 , 连续点击提交按钮 , 会重 复提交 。
- 根本原因:按钮可以多次点击
- 解决方案:通过 js , 使得按钮只能提交一次 。
$(“#form1”).submit(function(){ $(“#sub_btn”).prop(“disabled”,true);})
3)表单提交后 , 点击浏览器回退按钮 , 不刷新页面 , 点击提交按钮再次提交表单
- 根本原因:服务器并不能识别请求是否重复 。
- 解决方案:使用 token 机制 。
1、页面生成时 , 产生一个唯一的 token 值 。将此值放入
2、表单提交时 , 带上这个 token 值 。
3、服务端验证 token 值存在 , 则提交表单 , 然后移除此值 。验证 token 不存在 , 说明是之前验证过一次被移除了 , 所以是重复请求 。不予处理
原理:
文章插图
代码:
jsp 页面
测试表单重复提交
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession();String token = request.getParameter("token");Object attribute = session.getAttribute(token); response.setContentType("text/html;charset=UTF-8"); if(attribute!=null){session.removeAttribute(token); response.getWriter().write("请求成功!"); }else{ response.getWriter().write("请不要重复请求!"); }}
其实防止重复提交的核心就是让服务器有一个字段能来识别此次请求是否已经执行 。这个字段需要页面传递过来 , 因为只要回退回去的页面 , 字段都是一致的 。不会变化 , 通过这个特性我们想到了 token 机制来防止重复提交
欢迎工作一到五年的Java工程师朋友们加入Java程序员开发:
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、源码 , , Netty,Redis,Kafka,Mysql,,,,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己 , 不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻 , 使劲拼 , 给未来的自己一个交代!
郑重声明:本文版权归原作者所有 , 转载文章仅为传播更多信息之目的 , 如作者信息标记有误 , 请第一时间联系我们修改或删除 , 谢谢 。
- 打新冠疫苗要注意什么 新冠疫苗只能网上预约吗
- 现在什么浏览器好,目前最好用的一款浏览器推荐
- 2019婚姻法新规定 领结婚证需要什么材料
- 女人气血不足吃什么补得快 6款食疗别错过
- 武汉坐地铁用什么APP买票 五一武汉地铁运营时间会延长吗2021
- 女人补血吃什么好 5种食物要多吃
- 鸡翅尖为什么不能吃 看完你还敢吃吗
- 多肉浇水需要注意什么 多肉能喷水在叶子上吗
- 老人贫血吃什么好 这4种食物补血最快
- 常喝浓茶对身体的危害 浓茶什么程度算浓