如题。
1、点击按钮提交
2、F5或刷新页面
3、Ctrl+N后提交
等等情况

解决方案 »

  1.   

    Struts时的防止重复提交就不用说了
      

  2.   

    在表单页面防止恶意重复提交
    Sruts的防止重复提交就不用拖上来了
      

  3.   

    点按钮的,使按钮变成不可用,
    f5或刷新页面的,使用处理成功后页面转向(这个不是很好,遇到处理时间长时),使用js在内嵌的<iframe>中处理(iframe中也是可以掉servlet的),再结合对按钮的是否可用的处理,
    ctrl+n,的,在js中设置页面全局变量。
    还可用弹出div来进行处理,在结合上面可以用到的技巧继续补充
      

  4.   

    后期防止用户刷新或者后退的话 用令牌 或者用鄙人独创的alert提示大法
      

  5.   

    1, 根据session  id  
    2, strtus框架Token控制:super.saveToken(request);
      

  6.   

    简单的不说了,给个这个
    <script type="text/javascript">
    window.onload=function(){
    document.getElementById("form1").action="<%=request.getContextPath()%>/servlet/CheckAdminLoginServlet";
    };
    function OnCompleted(errnum,errmessage){
    switch(errnum){
    case 0:
    break;
    case 101:
    alert('Fill blank');
    return;
    case 201:
    alert('Login failed');
    return;
    }
    window.location='<%=request.getContextPath()%>/admin/admin.jsp';
    }
    function check(){
    with(document.getElementById('form1')){
    if(name.value.length<=0){
    alert('fill name');
    return false;
    }
    if(password.value.length<=0){
    alert('fill password');
    return false;
    }

    return true;
    }
    }
    </script>
    <form id="form1" target="CheckLogin" name="form1" method="post" action="" onsubmit="return check();">
    ...
    <script type="text/javascript">
    document.write( '<iframe name="CheckLogin" style="display: none" src="<%=request.getContextPath()%>/ui/wait.htm"></iframe>' ) ;
    </script>
    </form>
      

  7.   

    哎,code中间居然不能再加UBB了。
    注意代码中间的
    是为了突出,才加的修饰。
    部分代码,根据情况需要酌情增删。
      

  8.   

    最原始的方式和原理:客户端的隐藏字段和服务段的预定值比较
    包装后的方式:struts中的token,其实也是上一种方式,可以看看源代码就知道了。
      

  9.   

    struts的令牌机制已经足够解决你遇到过的重复提交的问题了
      

  10.   

    Struts的Token机制就不用讲了。。
      

  11.   

      <script lnaguage="javascript">   
      <!--   
          top.location   =   "/oa/index.jsp";   
          location.replace   =   "/oa/index.jsp";   
      //-->   
      </script> 
      

  12.   

    总结下:
    点按钮的,使按钮变成不可用, 
    f5或刷新页面的,使用处理成功后页面转向(这个不是很好,遇到处理时间长时),使用js在内嵌的 <iframe>中处理(iframe中也是可以掉servlet的),再结合对按钮的是否可用的处理, 
    ctrl+n,的,在js中设置页面全局变量。 
    还可用弹出div来进行处理,在结合上面可以用到的技巧 根据session  id  
    strtus框架Token控制:
    验证码 时间戳
    alert提示大法还有更好更简单更有效的方法吗?
      

  13.   

    简单实在的方法 是成功后
    有recrdrit()跳转一下,不关他怎么刷新都没用了这个方法简单实在
      

  14.   

    对了
    google的邮箱登陆系统 就是这样的你可以试下注册后账号,在刷新是没用的
      

  15.   

    struts1里用Token来解决重复提交。
      

  16.   

    下面提供几种常用的方法. 
    1,采用struts中token方法实现. 
    2,解发写入数据库操作的action之后,不再用forward的方法,转发页面请求,直接采用sendRedirect方法,将URL地址中触发写入数据库操作的action转到一个新的页面,再刷新页面,不会重复提交数据.
    3,解发写入数据库操作的action之后,调用formbean中的resetform方法,将form中的数据库清空,当然提交form中数据库有一定限制时会起作用,允许向数据库写入null时,就不起作用了.  
    4,页面脚本实现,当提交过一次表单后,将提交按钮变为不可用,就不会再触发写入数据库的操作.
      

  17.   

    token防止普通重复提交
    session标签控制瞬间多次提交
      

  18.   

    我基本上struts中自带的
    session也搞过
    js没试过
      

  19.   

    如果不是恶意的重复提交:
    不刷新页面,用ajax后台提交,按后退、F5按了也白按。
    按下提交按钮后disable掉,ajax处理后回调enable按钮的函数。如果是恶意的,session 都是防不了的。需要防DOS的手段了。
      

  20.   

    Response.Write("<script language='javascript'>alert('提交成功');window.location='"+Request.Url+"'</script>");
      

  21.   

    前台页面置灰按钮,ALERT之类基本没用,只能屏蔽部分,这种最好要后台处理
    就个URL都可以进入后台
      

  22.   

    如果 js被禁用了呢?你们的防止还又效吗,
    我认为凡是用js来现实的,都是不安全的。
      

  23.   

    1,后台控制,session或者数据库里标识一下或者重定向一个静态页面。
    2,前台用js,比如点击按钮不可用,这个东西F5还是有用的
      

  24.   

    struts2好像有办法.其他的就不知道了
      

  25.   

    你可以根据sessionid来判断,如果这个sessionid提交过了,在session里保存它的提交记录为true,下次就做判断,屏蔽他提交按钮
      

  26.   

    1.在struts中有一个令牌的可以来防止重复提交
    2.用javascript脚本控制
      

  27.   

    struts 不用时令牌,可以这样不用return mapping.findForward("....");
    用  response.sendRedirect("....."); return null;我的愚见...
      

  28.   

    在action中:
    if( !isTokenValid(request,true) ){
         System.out.println("重复提交!");
         saveToken( request );
         request.setAttribute("","");
         return mapping.findForward("");
    }saveToken( request );在页面上控制:
    使用js将提交按钮屏蔽
      

  29.   

    js
       
        function hidbutton()
        {
         if(window.document.readyState!=null && window.document.readyState!='complete')
         {
            //判断页面是否执行完毕
                //alert("数据加载中,请您稍等!");
                //document.getElementById("btnRechargeList").display=false;
                //查询按钮隐藏
               document.getElementById("btnRechargeList").style.display="none";
               //显示提示
               document.getElementById("spanMsg").innerHTML="数据加载中,请您稍等!";
            return false;
            }
            else
            {
                //alert("1");
                //提示消息隐藏
                document.getElementById("spanMsg").visible=false;
                return true;
            }
        }按钮应用
                    <asp:Button ID="btnRechargeList" runat="server" Text="查看消费清单" OnClientClick="return btnCheck()" OnClick="btnRechargeList_Click" /><span id="spanMsg" style="color: red"></span></td>
      

  30.   

    js 
      
        function hidbutton() 
        { 
        if(window.document.readyState!=null && window.document.readyState!='complete') 
        { 
            //判断页面是否执行完毕 
                //alert("数据加载中,请您稍等!"); 
                //document.getElementById("btnRechargeList").display=false; 
                //查询按钮隐藏 
              document.getElementById("btnRechargeList").style.display="none"; 
              //显示提示 
              document.getElementById("spanMsg").innerHTML="数据加载中,请您稍等!"; 
            return false; 
            } 
            else 
            { 
                //alert("1"); 
                //提示消息隐藏 
                document.getElementById("spanMsg").visible=false; 
                return true; 
            } 
        } 按钮应用 
                    <asp:Button ID="btnRechargeList" runat="server" Text="查看消费清单" OnClientClick="hidbutton() OnClick="btnRechargeList_Click" /> <span id="spanMsg" style="color: red"> </span> </td> 
      

  31.   

    这个简单,提交完把按钮 display:none掉