网络编程 
首页 > 网络编程 > 浏览文章

详解struts2的token机制和cookie来防止表单重复提交

(编辑:jimmy 日期: 2025/5/1 浏览:3 次 )

详解struts2的token机制和cookie来防止表单重复提交

今天在做一个投票系统时要实现防止表单重复提交!

当时就想到了用struts2提供的token机制

struts2的token机制防止表单重复提交:

首先需要在提交的jsp页面(要使用token机制,必须使用struts2提供的标签库)加上

 
<s:token></s:token> 

 这段代码,然后在struts.xml里面需要进行如下配置: 

  <action name="token" class="com.xiaoluo.struts2.TokenAction"> 
    <result name="success">/tokenSuccess.jsp</result> 
    <result name="invalid.token">/tokenFail.jsp</result> //name必须是invalid.token 
         
    <interceptor-ref name="token"></interceptor-ref> 
    <interceptor-ref name="defaultStack"></interceptor-ref> 
  </action> 

 总的来说,struts2提供的token机制来防止表单重复提交还是挺方便的,但是有时却不一定很好的达到我们所需要的目的!

接下来是用cookie来防止表单重复提交,就拿今天做的投票系统的例子来说,通过将 每个投票选项的id以及"hasVote" + id的组合放到cookie里面,然后根据所需设置cookie存活时间,然后放到response里面,然后在处理投票的action里首先判断 cookie中的name是否是已经投过票的名称,如果是就重定向到重复提交页面!

 Cookie[] cookies = request.getCookies(); 
         
    for(Cookie cookie : cookies) 
    { 
      if(String.valueOf(vote.getId()).equals(cookie.getValue())) 
      { 
        response.sendRedirect("repeatSubmit.jsp"); 
      } 
      else 
      { 
        Cookie cookie2 = new Cookie("hasVote" + vote.getId(), String.valueOf(vote.getId())); 
             
        response.addCookie(cookie2); 
      } 
    } 

我觉得cookie的这种方法更加实用一些,在实际中根据自己情况自行选择方式吧!

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

上一篇:JSP 开发SSH整合异常解决办法
下一篇:JSP spring boot / cloud 使用filter防止XSS
一句话新闻
高通与谷歌联手!首款骁龙PC优化Chrome浏览器发布
高通和谷歌日前宣布,推出首次面向搭载骁龙的Windows PC的优化版Chrome浏览器。
在对骁龙X Elite参考设计的初步测试中,全新的Chrome浏览器在Speedometer 2.1基准测试中实现了显著的性能提升。
预计在2024年年中之前,搭载骁龙X Elite计算平台的PC将面世。该浏览器的提前问世,有助于骁龙PC问世就获得满血表现。
谷歌高级副总裁Hiroshi Lockheimer表示,此次与高通的合作将有助于确保Chrome用户在当前ARM兼容的PC上获得最佳的浏览体验。
友情链接:杰晶网络 DDR爱好者之家 南强小屋 黑松山资源网 白云城资源网 网站地图 SiteMap