JavaWeb 案例9 — 表单重复提交问题
2021/9/1 14:06:28
本文主要是介绍JavaWeb 案例9 — 表单重复提交问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、表单重复提交问题
1、方式一
提交完表单。 服务器使用请求转来进行页面跳转。 这个时候, 用户按下功能键 F5, 就会发起最后一次的请求。造成表单重复提交问题。 解决方法: 使用重定向来进行跳转
2、方式二
用户正常提交服务器, 但是由于网络延迟等原因, 迟迟未收到服务器的响应, 这个时候, 用户以为提交失败,就会着急, 然后多点了几次提交操作, 也会造成表单重复提交。
3、方式三
用户正常提交服务器。 服务器也没有延迟, 但是提交完成后, 用户回退浏览器。 重新提交。 也会造成表单重复提交。
二、解决方案
为了防止用户重复提交或其他一些恶意的行为,可以在服务器端采用一定的措施防止用户重复提交,如下几种方案:
1、使用 UUID
UUID 是通用唯一识别码(Universally Unique Identifier)的缩写,是一个全球唯一的32为的16进制的随机数,它保证对在同一时空中的所有机器都是唯一的。
思路:
① 在提交表单的 jsp 中生成一个 UUID,并将它作为 Token 存放到 session 域和表单的隐藏域中。
② 用户提交表单后,可以获取表单隐藏域中的 Token,然后再从 session 域中获取 Token
③ 比较两个 Token 是否相同,如果相同,进行提交,并且把 session 域中的 Token 移除;如果不同,则不进行提交工作。
代码示例:
1 // 登录的 jsp 页面 2 <% 3 String uuid = UUID.randomUUID().toString().replace("-", ""); 4 session.setAttribute("uuid", uuid); 5 %> 6 <form action="LoginServlet" method="post"> 7 <input type="hidden" value="<%=uuid %>" name="uuid2"> 8 <label>用户名称:</label> 9 <input class="itxt" type="text" placeholder="请输入用户名" autocomplete="off" tabindex="1" name="username" /> 10 <br /> 11 <br /> 12 <label>用户密码:</label> 13 <input class="itxt" type="password" placeholder="请输入密码" autocomplete="off" tabindex="1" name="password" /> 14 <br /> 15 <br /> 16 <input type="submit" value="登录" id="sub_btn" /> 17 </form> 18 19 //处理登录的 Servlet 20 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 21 HttpSession session = request.getSession(); 22 23 //分别取session域和隐藏域中的uuid值 24 String uuid2 = request.getParameter("uuid2"); 25 Object uuid = session.getAttribute("uuid"); 26 27 //判断是否相等, 28 if(uuid != null && uuid.toString().equals(uuid2)) { 29 //相等:提交,移除session域中的Token 30 System.out.println("提交啦!!!哈哈"); 31 session.removeAttribute("uuid"); 32 } 33 System.out.println("end!"); 34 35 }
2、使用验证码
验证码
这篇关于JavaWeb 案例9 — 表单重复提交问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-14折腾之王:JavaScript 之父 Brave 浏览器与 BAT 的诞生
- 2025-01-13从协作到创新:电商团队效率提升新方法
- 2025-01-13汉服销售拓展客源,能精准投放广告的软件求推荐!蛇年新春!
- 2025-01-13提升客户体验的关键:电商团队协作效率优化
- 2025-01-13不触碰资金的支付网关有哪些?
- 2025-01-13如何运用敏捷开发的6大模型来提高团队工作效率?
- 2025-01-13汉服制作质量检测,能高清放大细节的软件用哪个?2025 新春!
- 2025-01-13团队目标管理的6种实用方法(附OKR模板)
- 2025-01-13短剧制片的幕后:如何通过协同编辑提升效率
- 2025-01-13B端产品业务调研:系统步骤与策略解析