你可以只用设置一个JSP的页面,然后再用到的时候就跳转到<action="****">再在****里面设置一下只能提交的次数为1就可以实现了

解决方案 »

  1.   

    用struts可以,利用Token机制解决重复提交问题,学习中...
      

  2.   

    <html:form action="myAction.do" method="post" 
        onsubmit="getElById('submitInput').disabled = true; return true;">  
      
      <html:image styleId="submitInput" src="images/ok_b.gif" border="0" />
      
    </html:form>
      

  3.   

    用struts可以,利用Token机制解决重复提交问题,学习中...有人能對此描述一下麼?
      

  4.   

    在action里面的插入动作里
    String token_request = request.getParameter("org.apache.struts.taglib.html.TOKEN");
    if(!isTokenValid(request)){
    saveToken(request);
    }else{
            resetToken(request);
      }
      

  5.   

    Token
    原理很简单,网上资料很多
      

  6.   

    在struct_config.xml里不用加什么东西。在action里面看你的提交的方式
      

  7.   

    〈input type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="6aa35341f25184fd996c4c918255c3ae"〉,这个value是TokenProcessor类中的generateToken()获得的,是根据当前用户的session id和当前时间的long值来计算的。第二:在客户端提交后,我们要根据判断在请求中包含的值是否和服务器的令牌一致,因为服务器每次提交都会生成新的Token,所以,如果是重复提交,客户端的Token值和服务器端的Token值就会不一致。下面就以在数据库中插入一条数据来说明如何防止重复提交。在Action中的add方法中,我们需要将Token值明确的要求保存在页面中,只需增加一条语句:saveToken(request);,如下所示: 
    public ActionForward add(ActionMapping mapping, ActionForm form, 
    HttpServletRequest request, HttpServletResponse response)
    //前面的处理省略
    saveToken(request);
    return mapping.findForward("add");
    }在Action的insert方法中,我们根据表单中的Token值与服务器端的Token值比较,如下所示:
    public ActionForward insert(ActionMapping mapping, ActionForm form, 
    HttpServletRequest request, HttpServletResponse response)
    if (isTokenValid(request, true)) {
    // 表单不是重复提交
    //这里是保存数据的代码
    } else {
    //表单重复提交
    saveToken(request);
    //其它的处理代码
    }
    }