ITKeyword,专注技术干货聚合推荐

注册 | 登录

struts利用Token(令牌)防止用户重复提交(转载)

pengzhuo1 分享于

2020腾讯云10周年活动,优惠非常大!(领取2860元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1040

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

推荐:Struts token(令牌)防止重复提交

去年开发项目总结的重复提交的问题:如:退回,刷新都造成重复提交的问题;现在把总结的知识点给大家分享下,有什么不足之处多多指教: 一、Struts.xml配置文件

struts利用Token(令牌)防止用户重复提交(原创) 

在我们的开发中经常遇到需要防止用户重复提交的情况,如果你用了struts,恭喜你,因为struts已经给你做好了,你只要会调用即可:
在跳转到页面前的action方法中写:
public ActionForward toAddUser(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
      
       this .saveToken(request);        return mapping.findForward( "addUser" );
}
以上的 this.saveToken(request),会在将要跳转到的"addUser.jsp"页面上生成一个

<input type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="38912d4c87ce950cf6c159411c0a4966">

的隐藏字段,value值是随机生成的,并且同时把该属性和值放到Session中。

public ActionForward addUser(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
      
       if ( ! this .isTokenValid(request, true )) {
           request.setAttribute( "info" , "请不要刷新! " );
           return mapping.findForward( "backInfo" );        }          bo.addUser() ;          return mapping.findForward( "addUser" );
    }
当用户填写完信息第一次提交,调用"addUser"方法时,咱们看一下,其中的" this.isTokenValid(request, true)"都做了些什么:
把从页面传来的org.apache.struts.taglib.html.TOKEN的值和session中的org.apache.struts.taglib.html.TOKEN值比较,
如果值是相等的(这时的值是相等),会清除session中的该令牌。继续执行bo.addUser() 后跳转到"addUser.jsp"页面。
当用户后退到该页面,点提交,程序依然会对从页面来的与session中的org.apache.struts.taglib.html.TOKEN的值进行比较,由于在第一次提交时已经清除了该令牌,所以struts就知道这时的用户
正在进行重复提交,故执行:
request.setAttribute("info", "请不要刷新!");
return mapping.findForward( "backInfo" );

推荐:利用Token防止重复提交(Struts框架)

如果用户对一个html表单多次提交,web应用应该能够判断用户的重复提交行为,并作出相应的处理。 最常见的是新增一条数据,用户已经提交表单并且服务器端已经完成

struts利用Token(令牌)防止用户重复提交(原创)  在我们的开发中经常遇到需要防止用户重复提交的情况,如果你用了struts,恭喜你,因为struts已经给你做好了,你只要会调用即可: 在跳转到页

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。