精华内容
下载资源
问答
  • 2022-03-04 07:11:34

    方案一:利用Session防止表单重复提交

            a、在regist.jsp页面中生成一个为一个随机值,将其保存到session中,同时将其保存为表单的隐藏域的值。

            b、在处理注册的请求时,获取session中的值,获取请求参数的值,比较两者是否相同,如果相同说明不是重复提交,请求通过同时删除session中保存的的值,如果不相同则是重复提交,不能通过。

    方案二:判断请求url的数据是否和上一次相同

    方案三:利用Spring AOP 和redis的锁来实现防止表单重复提交

    人无完人,接受指点与反驳,森!!仔

    更多相关内容
  • java实现防止表单重复提交

    热门讨论 2010-07-19 10:46:14
    服务器端避免表单重复提交,利用同步令牌来解决重复提交的基本原理如下:(1)用户访问提交数据的页面,服务器端在这次会话中,创建一个session对象,并产生一个令牌值,将这个令牌值作为隐藏输入域的值,随表单一起发送到...
  • 如何避免表单重复提交,这篇文章就为大家详细介绍了Java表单重复提交的避免方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 防止表单重复提交,或者是防止按F5 刷新提交表单。  在WEB开发中是经常会碰到这样的问题的。  目前主流的解决方法有以下三种:  1、采用脚本来解决  2、重定向到别的页面  3、使用s:token 标签 ...

    防止表单重复提交,或者是防止按F5 刷新提交表单。

           在WEB开发中是经常会碰到这样的问题的。

       目前主流的解决方法有以下三种:

        1、采用脚本来解决

        2、重定向到别的页面

        3、使用s:token 标签

       

       由于我是使用S2SH来开发的,所以就选择了第三种方法。

         先简单的解释下<s:token  /> 这个标签,<s:token>就是为了防止Struts2中表单重复提交的。他的实现类是org.apache.struts2.views.jsp.ui.TokenTag,继承于org.apache.struts2.views.jsp.ComponentTagSupport。

    TokenTag ComponentTagSupport.doStartTag 将控件对象化
    TokenTag ComponentTagSupport.doEndTag component.end 调用component(Token)
    Token 继承自org.apache.struts2.components.UIBean,因此首先调用UIBean.end方法,在UIBean.end方法中最后一句调用定义为protected的方法evaluateExtraParams,这个方法是提供给UIBean的子类扩展使用的,在Token的evaluateExtraParams方法中
    String token = buildToken(tokenName);
    其中buildToken方法实际上调用的是 TokenHelper.setToken方法,在setToken方法中值得注意的是两点,
    1、 generateGUID()方法,此方法是生成Token值得算法所在
    2 、session.put(tokenName, token)可以看到此处将生成的值存储在session中,等待以后比对。

    生成guid后,token拦截器会判断客户端form提交的token和session中保存的session是否equals。如果equals则执行Action。否则拦截器直接返回invaid.token结果,Action对应的方法也不会执行

     所以我解决的方法是:

       1、前台jsp 表单在提交(</form>)之前,加入<s:token />标签,action中不需要做修改。

       2、在配置文件中做如下的配置就可以了

      

    [java]  view plain copy
    1. <action name="generateChoose" class="com.fzdna.application.agent.actions.admin.manager.numberManager.ChooseNumberAction"  
    2.             method="generateChoose">   
    3.             <interceptor-ref name="defaultStack" />    
    4.             <interceptor-ref name="token" />    
    5.             <result name="success">/admin/manager/numberManager/generateChooseNumber.jsp</result>  
    6.             <result name="error">/admin/manager/numberManager/generateChooseNumber.jsp</result>  
    7.             <result name="invalid.token" type="redirect">generateChooseNumber.do</result>  
    8.          </action>  

     这样就可以防止表单重复提交。

     

       再简单说下采用脚本控制,这中方式本来就存在缺陷,如果客服端禁止使用脚本,即使你的脚本写的再好,也是白费。个人建议还是在服务器端进行控制。

      前台jsp页面:

      <form action="duplicateAction.do" method="post" οnsubmit="return checkSubmit();"></form>

     js 代码如下:

      

    [javascript]  view plain copy
    1. <mce:script language="javascript"><!--  
    2.       
    3.     var checkSubmitFlag = false;      
    4.     function checkSubmit() {      
    5.       if (checkSubmitFlag == true) {      
    6.          return false;      
    7.       }      
    8.       checkSubmitFlag = true;      
    9.       return true;      
    10.    }      
    11.    document.ondblclick = function docondblclick() {      
    12.     window.event.returnValue = false;      
    13.    }      
    14.    document.onclick = function doconclick() {      
    15.        if (checkSubmitFlag) {      
    16.          window.event.returnValue = false;      
    17.        }      
    18.    }      
    19. // --></mce:script>   
      

     

    至于跳到中转页面,也就是在表单提交的时候跳转到一个中转的jsp页面即可。

    借助于网上达人的意见,及个人的体会,简单总结下。

    展开全文
  • 主要介绍了浅谈利用Session防止表单重复提交,简单介绍表单重复提交的情况,分析,以及解决方法代码示例,具有一定借鉴价值,需要的朋友可以了解下。
  • 在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交。一、表单重复提交...

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交。

    一、表单重复提交的常见应用场景

    有如下的form.jsp页面

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    1

    2

    3

    4

    5

    Form表单

    6

    7

    8

    9

    10 用户名:

    11

    12

    13

    14

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    form表单提交到DoFormServlet进行处理

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    1 package xdp.gacl.session;

    2

    3 import java.io.IOException;

    4 import javax.servlet.ServletException;

    5 import javax.servlet.http.HttpServlet;

    6 import javax.servlet.http.HttpServletRequest;

    7 import javax.servlet.http.HttpServletResponse;

    8

    9 public class DoFormServlet extends HttpServlet {

    10

    11 public void doGet(HttpServletRequest request, HttpServletResponse response)

    12 throws ServletException, IOException {

    13 //客户端是以UTF-8编码传输数据到服务器端的,所以需要设置服务器端以UTF-8的编码进行接收,否则对于中文数据就会产生乱码

    14 request.setCharacterEncoding("UTF-8");

    15 String userName = request.getParameter("username");

    16 try {

    17 //让当前的线程睡眠3秒钟,模拟网络延迟而导致表单重复提交的现象

    18 Thread.sleep(3*1000);

    19 } catch (InterruptedException e) {

    20 e.printStackTrace();

    21 }

    22 System.out.println("向数据库中插入数据:"+userName);

    23 }

    24

    25 public void doPost(HttpServletRequest request, HttpServletResponse response)

    26 throws ServletException, IOException {

    27 doGet(request, response);

    28 }

    29

    30 }

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    如果没有进行form表单重复提交处理,那么在网络延迟的情况下下面的操作将会导致form表单重复提交多次

    1.1、场景一:在网络延迟的情况下让用户有时间点击多次submit按钮导致表单重复提交

    演示动画如下所示:

    d05f07cffef47f6c187b5925a0c8a01d.png

    1.2、场景二:表单提交后用户点击【刷新】按钮导致表单重复提交

    演示动画如下所示:

    1d706802f97252c8f19e64c89b0fe83f.png

    点击浏览器的刷新按钮,就是把浏览器上次做的事情再做一次,因为这样也会导致表单重复提交。

    1.3、场景三:用户提交表单后,点击浏览器的【后退】按钮回退到表单页面后进行再次提交

    演示动画如下所示:

    11eab7735fed70ae95dda80ba786e53e.png

    二、利用JavaScript防止表单重复提交

    既然存在上述所说的表单重复提交问题,那么我们就要想办法解决,比较常用的方法是采用JavaScript来防止表单重复提交,具体做法如下:

    修改form.jsp页面,添加如下的JavaScript代码来防止表单重复提交

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    1

    2

    3

    4

    5

    Form表单

    6

    7 var isCommitted = false;//表单是否已经提交标识,默认为false

    8 function dosubmit(){

    9 if(isCommitted==false){

    10 isCommitted = true;//提交表单后,将表单是否已经提交标识设置为true

    11 return true;//返回true让表单正常提交

    12 }else{

    13 return false;//返回false那么表单将不提交

    14 }

    15 }

    16

    17

    18

    19

    20

    21 用户名:

    22

    23

    24

    25

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    我们看看使用了JavaScript来防止表单提交重复是否可以成功,运行效果如下:

    922635d2ed4156d95148fd28a7c310ee.png

    可以看到,针对"在网络延迟的情况下让用户有时间点击多次submit按钮导致表单重复提交"这个应用场景,使用JavaScript是可以解决这个问题的,解决的做法就是"用JavaScript控制Form表单只能提交一次"。

    除了用这种方式之外,经常见的另一种方式就是表单提交之后,将提交按钮设置为不可用,让用户没有机会点击第二次提交按钮,代码如下:

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    1 function dosubmit(){

    2 //获取表单提交按钮

    3 var btnSubmit = document.getElementById("submit");

    4 //将表单提交按钮设置为不可用,这样就可以避免用户再次点击提交按钮

    5 btnSubmit.disabled= "disabled";

    6 //返回true让表单可以正常提交

    7 return true;

    8 }

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    运行效果如下:

    5f5c191074200055470eaa30dace83f4.png

    另外还有一种做法就是提交表单后,将提交按钮隐藏起来,这种做法和将提交按钮设置为不可用是差不多的,个人觉得将提交按钮隐藏影响到页面布局的美观,并且可能会让用户误以为是bug(怎么我一点击按钮,按钮就不见了呢?用户可能会有这样的疑问),我个人在开发中用得比较多的是表单提交后,将提交按钮设置为不可用,反正使用JavaScript防止表单重复提交的做法都是差不多的,目的都是让表单只能提交一次,这样就可以做到表单不重复提交了。

    使用JavaScript防止表单重复提交的做法只对上述提交到导致表单重复提交的三种场景中的【场景一】有效,而对于【场景二】和【场景三】是没有用,依然无法解决表单重复提交问题。

    三、利用Session防止表单重复提交

    对于【场景二】和【场景三】导致表单重复提交的问题,既然客户端无法解决,那么就在服务器端解决,在服务器端解决就需要用到session了。

    具体的做法:在服务器端生成一个唯一的随机标识号,专业术语称为Token(令牌),同时在当前用户的Session域中保存这个Token。然后将Token发送到客户端的Form表单中,在Form表单中使用隐藏域来存储这个Token,表单提交的时候连同这个Token一起提交到服务器端,然后在服务器端判断客户端提交上来的Token与服务器端生成的Token是否一致,如果不一致,那就是重复提交了,此时服务器端就可以不处理重复提交的表单。如果相同则处理表单提交,处理完后清除当前用户的Session域中存储的标识号。

    在下列情况下,服务器程序将拒绝处理用户提交的表单请求:

    存储Session域中的Token(令牌)与表单提交的Token(令牌)不同。

    当前用户的Session中不存在Token(令牌)。

    用户提交的表单数据中没有Token(令牌)。

    看具体的范例:

    1.创建FormServlet,用于生成Token(令牌)和跳转到form.jsp页面

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    1 package xdp.gacl.session;

    2

    3 import java.io.IOException;

    4 import javax.servlet.ServletException;

    5 import javax.servlet.http.HttpServlet;

    6 import javax.servlet.http.HttpServletRequest;

    7 import javax.servlet.http.HttpServletResponse;

    8

    9 public class FormServlet extends HttpServlet {

    10 private static final long serialVersionUID = -884689940866074733L;

    11

    12 public void doGet(HttpServletRequest request, HttpServletResponse response)

    13 throws ServletException, IOException {

    14

    15 String token = TokenProccessor.getInstance().makeToken();//创建令牌

    16 System.out.println("在FormServlet中生成的token:"+token);

    17 request.getSession().setAttribute("token", token); //在服务器使用session保存token(令牌)

    18 request.getRequestDispatcher("/form.jsp").forward(request, response);//跳转到form.jsp页面

    19 }

    20

    21 public void doPost(HttpServletRequest request, HttpServletResponse response)

    22 throws ServletException, IOException {

    23 doGet(request, response);

    24 }

    25

    26 }

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    2.在form.jsp中使用隐藏域来存储Token(令牌)

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    1

    2

    3

    4

    5

    form表单

    6

    7

    8

    9

    10

    11

    12 ">

    13 --%>

    14

    15

    16 用户名:

    17

    18

    19

    20

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    3.DoFormServlet处理表单提交

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    1 package xdp.gacl.session;

    2

    3 import java.io.IOException;

    4 import javax.servlet.ServletException;

    5 import javax.servlet.http.HttpServlet;

    6 import javax.servlet.http.HttpServletRequest;

    7 import javax.servlet.http.HttpServletResponse;

    8

    9 public class DoFormServlet extends HttpServlet {

    10

    11 public void doGet(HttpServletRequest request, HttpServletResponse response)

    12 throws ServletException, IOException {

    13

    14 boolean b = isRepeatSubmit(request);//判断用户是否是重复提交

    15 if(b==true){

    16 System.out.println("请不要重复提交");

    17 return;

    18 }

    19 request.getSession().removeAttribute("token");//移除session中的token

    20 System.out.println("处理用户提交请求!!");

    21 }

    22

    23 /**

    24 * 判断客户端提交上来的令牌和服务器端生成的令牌是否一致

    25 * @param request

    26 * @return

    27 * true 用户重复提交了表单

    28 * false 用户没有重复提交表单

    29 */

    30 private boolean isRepeatSubmit(HttpServletRequest request) {

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

    32 //1、如果用户提交的表单数据中没有token,则用户是重复提交了表单

    33 if(client_token==null){

    34 return true;

    35 }

    36 //取出存储在Session中的token

    37 String server_token = (String) request.getSession().getAttribute("token");

    38 //2、如果当前用户的Session中不存在Token(令牌),则用户是重复提交了表单

    39 if(server_token==null){

    40 return true;

    41 }

    42 //3、存储在Session中的Token(令牌)与表单提交的Token(令牌)不同,则用户是重复提交了表单

    43 if(!client_token.equals(server_token)){

    44 return true;

    45 }

    46

    47 return false;

    48 }

    49

    50 public void doPost(HttpServletRequest request, HttpServletResponse response)

    51 throws ServletException, IOException {

    52 doGet(request, response);

    53 }

    54

    55 }

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    生成Token的工具类TokenProccessor

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    1 package xdp.gacl.session;

    2

    3 import java.security.MessageDigest;

    4 import java.security.NoSuchAlgorithmException;

    5 import java.util.Random;

    6 import sun.misc.BASE64Encoder;

    7

    8 public class TokenProccessor {

    9

    10 /*

    11 *单例设计模式(保证类的对象在内存中只有一个)

    12 *1、把类的构造函数私有

    13 *2、自己创建一个类的对象

    14 *3、对外提供一个公共的方法,返回类的对象

    15 */

    16 private TokenProccessor(){}

    17

    18 private static final TokenProccessor instance = new TokenProccessor();

    19

    20 /**

    21 * 返回类的对象

    22 * @return

    23 */

    24 public static TokenProccessor getInstance(){

    25 return instance;

    26 }

    27

    28 /**

    29 * 生成Token

    30 * Token:Nv6RRuGEVvmGjB+jimI/gw==

    31 * @return

    32 */

    33 public String makeToken(){ //checkException

    34 // 7346734837483 834u938493493849384 43434384

    35 String token = (System.currentTimeMillis() + new Random().nextInt(999999999)) + "";

    36 //数据指纹 128位长 16个字节 md5

    37 try {

    38 MessageDigest md = MessageDigest.getInstance("md5");

    39 byte md5[] = md.digest(token.getBytes());

    40 //base64编码--任意二进制编码明文字符 adfsdfsdfsf

    41 BASE64Encoder encoder = new BASE64Encoder();

    42 return encoder.encode(md5);

    43 } catch (NoSuchAlgorithmException e) {

    44 throw new RuntimeException(e);

    45 }

    46 }

    47 }

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    首先访问FormServlet,在FormServlet中生成Token之后再重定向到form.jsp页面,这次是在服务器端处理表单重复提交的,运行效果如下:

    2363c354787bf77fd0349c60ff9bf81f.png

    从运行效果中可以看到,通过这种方式处理表单重复提交,可以解决上述的场景二和场景三中出现的表单重复提交问题。

    展开全文
  • @return */public static boolean judge(String id, Object lockClass) { synchronized (lockClass) {// 重复请求判断if (reqCache.containsKey(id)) {// 重复请求 System.out.println("请勿重复提交!...

    方式一:直接添加synchronized关键字

     

     

    方式二:通过apache提供的工具进行校验----双重检测锁(DCL)

    1.引入

    <dependency>
      <groupId>org.apache.commonsgroupId>
      <artifactId>commons-collections4artifactId>
      <version>4.4version>
    </dependency>

     

    2.封装工具类

    import org.apache.commons.collections4.map.LRUMap;

    /**
     * 幂等性判断
     */
    public class IdempotentUtils {

        // 根据 LRU(Least Recently Used,最近最少使用)算法淘汰数据的 Map 集合,最大容量 100 个
        private static LRUMap reqCache = new LRUMap<>(100);/**
         * 幂等性判断
         * @return
         */public static boolean judge(String id, Object lockClass) {
            synchronized (lockClass) {// 重复请求判断if (reqCache.containsKey(id)) {// 重复请求
                    System.out.println("请勿重复提交!!!" + id);return false;
                }// 非重复请求,存储请求 ID
                reqCache.put(id, 1);
            }return true;
        }
    }
     

     

     

    调用代码如下:

    import com.example.idempote.util.IdempotentUtils;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;

    @RequestMapping("/user")
    @RestController
    public class UserController4 {
        @RequestMapping("/add")
        public String addUser(String id) {
            // 非空判断(忽略)...
            // -------------- 幂等性调用(开始) --------------
            if (!IdempotentUtils.judge(id, this.getClass())) {
                return "执行失败";
            }
            // -------------- 幂等性调用(结束) --------------
            // 业务代码...
            System.out.println("添加用户ID:" + id);
            return "执行成功!";
        }
    }

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 用户在操作表单Post数据时往往会出现表单数据重复提交的问题,尤其在Web开发中此类问题比较常见。刷新页面,后退操作以前的页面,单机多次按钮都会导致数据重复提交。此类问题是因为浏览器重复提交HTTP请求导致。...
  • 主要介绍了Java后台防止客户端重复请求、提交表单实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • java防止表单重复提交

    2021-04-05 14:37:48
    java防止表单重复提交方法一:方法二:提交一次后将按钮设为不可用 方法一: 方法二:提交一次后将按钮设为不可用 令牌生成器加密 将token存入Session中,转发到form表单 判断是否是重复提交 Form表单 ...
  • 一、简介 最近在项目中,有一个用户移动端打卡上班的功能,如果短时间内快速双击几次打卡按钮的话,数据库会生成几条一模一样的打卡记录,很明显这...因此有效防止表单重复提交有一定的必要性。 二、解决方案 一般
  • 表单重复提交原理图1、Servelt的表单重复提交的一种解决方案session存验证码比如在登录时,可以通过验证码存在session中来解决login.jsp用户名:密码:验证码:ValidateCodeServlet@WebServlet("/ValidateCodeServlet")...
  • 展开全部1.js方法解决:关于js方法解决就是说通过js动态控制提交按钮不能多次点击,或者e69da5e887aa...方案一:通过设立标识使表单不能重复提交:var flag=true; function Sub(){ if(flag){flag = false;docum...
  • 我们大家再进行web开发的时候,必不可少会遇见表单重复提交问题。今天就来给总结如何解决表单提交问题,欢迎大家交流指正。 首先我们在讨论如何解决表单重复提交问题之前先来解决三个问题:1.什么叫表单重复提交?...
  • 前言:记得刚学java web时,老师说过用redirect重定向能防止表单提交。但是真正做项目时发现也不尽如意,自己一般还是用js控制表单的提交. 最近看了这篇文章也颇受启发,尤其是下面的关于“集群”评论部分.虽然...
  • 主要介绍了JAVA防止重复提交Web表单的方法,涉及Java针对表单的相关处理技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 由于网速等原因造成页面卡顿,用户重复刷新提交页面,甚至会有黑客或恶意用户使用工具重复恶意提交表单来对网站进行攻击,所以说防止表单重复提交在 Web 应用中的重要性是极高的。今天就和大家分享一下如何利用...
  • 防止用户表单重复提交的完整demo 分别在js与后台中处理,js处理(针对网络慢情况) 后台处理(针对用户点击浏览器上的刷新按钮等)
  • Java防止表单重复提交

    千次阅读 2013-11-28 12:59:59
    看了网上的,有几种方法:  1 在你的表单页里HEAD区加入这段代码:        ...生成一个令牌保存在用户...中的令牌比较,如相同则是重复提交  3  在你的服务器端控件的代码中使用Response.Redirect("selfPa
  • Java开发中怎么防止重复提交

    千次阅读 2021-06-15 13:20:34
    这能避免用户按F5导致的重复提交,而其也不会出现浏览器表单重复提交的警告,也能消除按浏览器前进和后退按导致的同样问题。 3)在session中存放一个特殊标志 在服务器端,生成一个唯一的标识符,将它存入session,...
  • JavaWeb防止表单重复提交的几种方式

    千次阅读 2019-06-27 22:21:02
    一、表单重复提交的常见应用场景 网络延迟的情况下用户多次点击submit按钮导致表单重复提交 用户提交表单后,点击【刷新】按钮...二、防止防止表单重复提交的方式 1、利用JavaScript防止表单重复提交 (1)、用Java...
  • 在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交。 一、表单重复...
  • javaWeb应用后端防止表单重复提交

    万次阅读 2019-05-29 15:24:54
    正常我们防止一个页面的表单重复提交有2种途径 1:客户端控制(比如js判断,按钮置灰不可用等等这个大家自行网上查询) 2:服务器端针对api自己多业务逻辑判断 实际使用的场景中,我们大多是2者结合起来做,不能把...
  • 2、将Token发送到客户端的Form表单中,在Form表单中使用隐藏域来存储这个Token,表单提交的...3、服务器端判断客户端提交上来的Token与服务器端生成的Token是否一致,如果不一致,那就是重复提交了,此时服务器端就...
  • 防止表单重复提交(只通过后台实现)

    万次阅读 热门讨论 2019-03-26 18:15:18
    1.背景与介绍: 平时开发的项目中可能会出现下面这些情况: ... 由于网速等原因造成页面卡顿,用户重复刷新提交页面。...因此有效防止表单重复提交有一定的必要性。 使用AOP自定义切入实现 实现原理: ...
  • %--隐藏域-防止表单重复提交--%> <input type="hidden" name="examToken" id="examToken"></input> 2、表单提交的时候带上 token 3、springMVC 方法上添加注解 @TokenCheck(isC...
  • 当用户在表单中填写完信息,单击“提交”按钮后,可能会因为没有...在实际应用中,由于用户没有及时看到响应信息而导致的重复提交时有发生。响应不及时有可能是因为这个时段服务器的负载较大,又或者这个处理本身就是

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,573
精华内容 7,829
关键字:

java防止表单重复提交

java 订阅