Servlet 防止刷新重复提交 在java web工程中,当jsp向Servlet提交请求时,如何防止刷新提交(F5)? 第一种解决方法,参照老紫竹的思路: 可以使用的方法有,在jsp中定义一个变量值,这个变量值应该是唯一的,可以使用算法来保证生成数据的唯一性,例如hash算法,或者生成一个随机数(Random),并将这个数值保存到一个Set中,并将Set保存在session中,提交Servlet时将这个参数传递过去,在Servlet中的处理:接到参数和session中的set后,判断set中有没有传来的参数值,如果没有则页面是刷新造成的,并不是来自页面的提交,这时不做insert data的处理。 jsp 代码 : <% //生成一个formhash,算法可以自己定,不随便重复就可以了 Random ran = new Random(); String formhash = String.valueOf(ran.nextInt()); //读取当前session里面的hashCode集合,此处使用了Set,方便判断。 Set
formhashSession = (Set
) session.getAttribute("formhashSession"); if (formhashSession == null) { formhashSession = new HashSet
(); } // 检测重复问题 while (formhashSession.contains(formhash)) { formhash = String.valueOf(ran.nextInt()); } // 保存到session里面 formhashSession.add(formhash); // 保存 session.setAttribute("formhashSession", formhashSession); %>
防止servlet重复提交
最新推荐文章于 2023-03-12 14:12:08 发布