创建博客 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

欢迎来到三件事的空间

欢迎登陆 javacs.cn

 
 
 

日志

 
 

jsp、servlet防止刷新重复提交  

2011-08-15 14:43:40|  分类: servlet-jsp |  标签: |举报 |字号 订阅

参考struts的token(令牌)机制

在提交的时候在Servlet中根据用户的sessionid和当前时间的long值生成一个令牌(每次提交都会生成一个新令牌),将令牌保存在 该用户的会话中,并将令牌的值以request属性形式传到前端页面,在前端页面的form中增加传递令牌的隐藏域<input type="hidden" name="clientToken" value="<%=clientToken%>" />,提交form的时候,也会将clientToken传入Servlet,如果session中保存的令牌值与传入的不同,则是重复提交,因为 每次请求Servlet都会生成新的令牌,刷新时的令牌值是旧的令牌值,不是最新的令牌值。

Java代码  收藏代码
  1. jsp:  

  2. //获取令牌、防止刷新重复提交  
  3. <form>中增加<input type="hidden" name="clientToken" value="${clientToken}>" />    
  4.   
  5. java:  
  6.   
  7. /** 
  8.      * 令牌验证防止刷新提交 
  9.      */  
  10.     private String clientToken;  
  11.   
  12.   
  13. /** 
  14.      * 验证防止刷新重复提交 
  15.      * @return 
  16.      */  
  17.     private boolean validateToken()  
  18.     {  
  19.         boolean bl = false;  
  20.         try  
  21.         {  
  22.             String sessionToken = (String) getHttpRequest().getSession().getAttribute(  
  23.                     "token");  
  24.             if (StringUtils.isNotEmpty(sessionToken) && !clientToken.equals(sessionToken))  
  25.             {  
  26.                 // 禁止刷新  
  27.                 bl = false;  
  28.             }  
  29.             else  
  30.             {  
  31.                 // 正常的操作  
  32.                 bl = true;  
  33.                   
  34.                 // 生成新令牌  
  35.                 String sToken = UUID.randomUUID().toString().toUpperCase();  
  36.                 getHttpRequest().getSession().setAttribute("clientToken", sToken);  
  37.                 // 替换旧令牌  
  38.                 getHttpRequest().getSession().setAttribute("token", sToken);  
  39.             }  
  40.         }  
  41.         catch (Exception e)  
  42.         {  
  43.             LOGGER.error(e.getMessage());  
  44.         }  
  45.           
  46.         return bl;  
  47.     } 
  评论这张
 
阅读(827)| 评论(0)
推荐 转载

历史上的今天

最近读者

热度

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2014