关于重复提交 (初)

xiaoxiao2021-02-28  30

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

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

处理思路: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();');                  }             }         });

转载请注明原文地址: https://www.6miu.com/read-2613707.html

最新回复(0)