token处理重复表单提交备忘

first.jsp  只有关键代码

 

<%

    //生成一个令牌值
    org.apache.struts.util.TokenProcessor.getInstance().saveToken(request);
%>

<form action="second.jsp" method="post">

    <!-- org.apache.struts.action.TOKEN 不能修改 -->
    <input type="hidden" name="org.apache.struts.taglib.html.TOKEN"
           value="<%=session.getAttribute("org.apache.struts.action.TOKEN")%>" />


     <label>username<input type="text" name="username" value="" /></label><br/>
     <label>password<input type="text" name="password" value=""/></label><br/>           
     <label><input type="submit" name="Submit" value="Submit" /></label>
</form>

===============================================================

second.jsp

 

  Thread.sleep(1500);  //可以看到点击多次提交后的效果


  String   username=""; 
  String   password=""; 
  String isNew = "OK";

 

  //判断令牌是否和session中一样,true:同时生成新令牌,缺省isTokenValid(request)为false
  if(org.apache.struts.util.TokenProcessor.getInstance().isTokenValid(request,true)) { 
      username=request.getParameter("username");    
      password=request.getParameter("password"); 
      org.apache.struts.util.TokenProcessor.getInstance().resetToken(request); 
  } else { 
      org.apache.struts.util.TokenProcessor.getInstance().saveToken(request); 
      isNew = "重复提交";
  } 
  
  %> 
  username:<%=username%> 
  <br/> 
  password:<%=password%> 
  <br/> 
  是否重复提交:<%=isNew %>

=================================================================

PS:这个方法并不阻止用户多次点击按钮,在first页面最好还是控制提交按钮

 

 

另外:

使用重定向防止F5刷新页面,也就是重复提交,然后在请求页面增加

<%
response.setHeader("Cache-Control","no-store");
response.setHeader("Pragrma","no-cache");
response.setDateHeader("Expires",0);
%>

 

利用<meta>

<meta http-equiv="Pragma" content="no-cache">

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值