关于重复提交 (初) #spring#springmvc

第一次(自己理解后写的 粗略,没有加注解。):

原理,防止多次点击提交按钮 与重复提交的概念有些出入,并不是刷新页面啥的。

处理思路:session设置token ,页面设置个隐藏域等于token,每次验证成功后进后台取session中的token值与隐藏域提交上来的token值匹配 若是相同 则为一次提交,马上修改session中的token值,此时只有刷新页面 页面提交的token值才会与session中修改后的token值一样,所以判断如果session中的token值与页面提交的token值不相同则返回 跳出。不进行数据库操作。

前段代码:

<input id="token" type="hidden" name="token" value="${token}"/>

后端代码:

String token = request.getParameter("token");

if(null==token||StringUtils.isEmpty(token)){
            HttpSession session =request.getSession();
            if(session.getAttribute("token")!=null){
                      session.removeAttribute("token");
            }
            session.setAttribute("token",StringUtils.generateId());
}else{
        String sessionToken = (String) request.getSession().getAttribute("token");
         if(token.trim().equals(sessionToken.trim())){
                   HttpSession session =request.getSession();
                   session.removeAttribute("token");
                   session.setAttribute("token", StringUtils.generateId());
        }else{
                   addMessage(redirectAttributes, "请不要重复提交数据");
           return "redirect:" + Global.getAdminPath() + "/yhxx/htddxxb/htddlb?repage";
        }
}

--------------------工具类

public static String generateId() {
        String s = UUID.randomUUID().toString().toUpperCase();
        //去掉-
        return s.substring(0, 8) + s.substring(9, 13) + s.substring(14, 18)
                + s.substring(19, 23) + s.substring(24);
    }

第二次(关于前端ajax防止重复提交):思路,加一个参数,beforeSend:

    $.ajax({
            type: 'post',
            url: '${ctx}/jskj/sjzx/insertJsl',
            data: $("#insertJsl").serialize(),
            async: true,
            beforeSend:function(){//此为触发ajax之前防止重复提交的方法
                $('#tckbSubButton').val('提交中...');
                $('#tckbSubButton').attr('onclick','javascript:void();'); 
            },
            success: function(data){
                if(data=="true"){
                     alert("保存成功!");
                     $('#tckbSubButton').val('确定');
                     $('#tckbSubButton').attr('onclick','addjsl();'); 
                }
            }
        });

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值