posts - 5,  comments - 1,  trackbacks - 0
防止重复提交的hashCode
在表单显示页面
 1//生成一个formhash,算法可以自己定,不随便重复就可以了
 2  String formhash = MD5.encode(Long.toString(new Date().getTime()));
 3  //读取当前session里面的hashCode集合,此处使用了Set,方便判断。
 4  Set<String> formhashSession = (Set<String>) session.getAttribute("formhashSession");
 5  if (formhashSession == null{
 6    formhashSession = new HashSet<String>();
 7  }

 8  // 检测重复问题
 9  while (formhashSession.contains(formhash)) {
10    formhash = MD5.encode(Long.toString(new Date().getTime()));
11  }

12  // 保存到session里面
13  formhashSession.add(formhash);
14  // 保存
15  session.setAttribute("formhashSession", formhashSession);
表单里面增加如下字段
<input type="hidden" name="formhash" id="formhash" value="<%=formhash%>" />
在表单提交页面进行如下处理
 1// 拿到表单的formhash
 2    String formhash = upload.getParameter("formhash");
 3    // 拿到session里面的集合
 4    Set<String> formhashSession = (Set<String>) session.getAttribute("formhashSession");
 5    // 如果没有,则是重复提交,或者非法提交
 6    if (formhashSession == null || !formhashSession.contains(formhash)) {
 7      out.println("请不要重复提交!");
 8      return;
 9    }

10    // 下面进行其它的操作
11    // 
12    // 最后,如果操作成功,从session里面把这个formhash 删掉!
13    // 以免用户少填写了某个字段,造成表单无法再次提交
14    formhashSession.remove(formhash);
15    session.setAttribute("formhashSession", formhashSession);
posted on 2008-02-28 16:52 herry 阅读(228) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

有空多联系~

常用链接

留言簿(3)

随笔分类

随笔档案

文章分类

文章档案

收藏夹

java

搜索

  •  

最新评论

阅读排行榜

评论排行榜