美文网首页
J2EE防止重复提交表单的方案

J2EE防止重复提交表单的方案

作者: 南风nanfeng | 来源:发表于2018-06-22 16:43 被阅读41次

这种问题出现的原因或者说应用场景大致如下:

  1. 网络延迟,服务器未能及时做出响应,导致用户不断重复点击提交按钮
  2. 用户双击有意识的双击或者多次点击提交按钮
  3. F5刷新页面
  4. 点击浏览器后退按钮

解决方案主要分为客户端(浏览器)和服务端以及数据库。

  • js禁止按钮点击
    这种方式是一种比较简单也比较常用的方法。当用户提交完表单后,用javascript禁用提交按钮让按钮不可点击。也就是设置disabled属性为disabled或者true即可。

  • 按钮倒计时
    页面上表单提交后,将按钮置灰不可点击后加入倒计时,比如5秒或者10秒后按钮恢复点击状态才能再次提交。这种方式也可以避免大量请求,减轻服务端访问的压力。

  • 验证码
    页面上添加验证码,不管验证输入正确与否,提交后均刷新验证码。

  • ajax加锁
    采用ajax方式提交表单时,设置一个布尔变量(true/false),当然其他类型变量也可以。初始时为true可以提交,在前端向服务器发出请求后,服务端响应结果没有回来之前将该值置为false,正常响应时再置为true。

  • 提交后重定向到一个提交成功的页面
    表单提交后跳转到另外一个成功页面。这样可以避免用户按F5导致的重复提交,浏览器也不会出现表单重复提交的警告,以及消除按浏览器前进和后退按导致的同样问题。

  • 服务端生成一个唯一的token
    首先在服务端生成一个token保证唯一性,然后将这个token保存在session或者redis等缓存中。与此同时将token放到页面的隐藏input中,发给浏览器。用户在页面上提交时带着这个token一块提交到服务端,服务端通过比对token的值。如果相等代表首次提交,此时将session或者缓存中保存的token值remove掉,反之则认为重复提交,服务端不予处理。

  • cookie记录表单提交的状态
    使用Cookie记录表单提交的状态,根据其状态可以检查是否已经提交过表单。跟上一种类似,服务端生成token存入Cookie,表单提交时将Cookie中token和服务端token比对

  • 数据库添加唯一索引约束
    向数据库字段添加一个唯一索引。如果表单重复提交,那么数据库插入重复记录时,唯一约束能有效避免重复入库。这样控制的话,日志会出现Your program attempts to store duplicate values in a database column that is constrained by a unique index的报错信息,看着有点不爽。

相关文章

  • J2EE防止重复提交表单的方案

    这种问题出现的原因或者说应用场景大致如下: 网络延迟,服务器未能及时做出响应,导致用户不断重复点击提交按钮 用户双...

  • 防止表单重复提交

    嘿,大家好,今天我来介绍几种简单的防止表单重复提交的方法: 防止表单重复提交 方法一:前端方式 当点击提交或者保存...

  • 防止表单重复提交的几种方案

    如果网速比较慢的情况下,用户点击的提交发现半天没有反映,于是又重新点击了几次提交按钮,这就造成了重复提交的问题。那...

  • 防止表单重复提交

    第一种(JavaScript): <%@ page language="java" import="java.ut...

  • 防止表单重复提交

    防止表单重复提交: 方法1:页面限制按钮 方法2:如图

  • 防止表单重复提交

    随机产生一个字符串(token) ,保存到session中,在向服务端发送请求时会携带token,本地token与...

  • 防止表单重复提交

    针对于重复提交的整体解决方案: 1.用redirect来解决重复提交的问题 2.点击一次之后,按钮失效 3.通过l...

  • 防止表单重复提交

    因为项目需要表单提交,可是发现了必须要防止用户提交,经过了几个小时的百度旅游总算找到的方法,其实说到底还是看官方手...

  • 防止表单重复提交

    一、前端控制(页面控制) 从前端控制主要方法就是点击提交后将提交按钮置灰,js中的提交方法不再响应提交事件 二、后...

  • 表单防止重复提交

    逻辑思路:1.提交数据之前判断当前提交按钮是否存在lock锁2.在ajax提交之前给提交按钮上锁3.ajax成功之...

网友评论

      本文标题:J2EE防止重复提交表单的方案

      本文链接:https://www.haomeiwen.com/subject/mbokyftx.html