主页  范文大全   设计学院   SEO研究   免费资源   网赚大全  QQ资源区    电影下载  在线电影   短信&笑话   校内网   理财知识   站长Blog   访客留言   顶级QQ百科

         声明:本站所有资料素材均是由站长精心整理搜集的,属于原创。我们同意您的转载和复制,但是在转载复制时请保留文字出处。本站资料全部免费使用,无需注册,力求打造华北最强最大的免费资源网站。

前两种是利用javascript,后面一种是在使用Struts的情况下参考实现

1 javascript ,设置一个变量只允许提交一次
   
    var checkSubmitFlg = false;   
    function checkSubmit()      
        checkSubmitFlg = true;     
        return true;  
        }  
        document.ondblclick = function docondblclick()
          
        document.onclick = function doconclick()   
    }

2 还是javascript将提交按钮或者image置为disable

onsubmit="getElById('submitInput').disabled = true; return true;">            

3 利用struts同步令牌机制

利用同步令牌(Token)机制来解决Web应用中重复提交问题Struts也给出了一个参考实现

基本原理:

服务器端在处理到达的请求之前会将请求中包含的令牌值与保存在当前用户会话中令牌值进行比较
看是否匹配在处理完该请求后,且在答复发送给客户端之前将会产生一个新令牌该令牌除传给
客户端以外也会将用户会话中保存的旧令牌进行替换这样如果用户回退到刚才提交页面并再次
提交的话,客户端传过来的令牌就和服务器端的令牌不一致从而有效地防止了重复提交发生

    if (isTokenValid(request, true))
     else

Struts根据用户会话ID和当前系统时间来生成一个唯一(对于每个会话)令牌具体实现可以参考
TokenProcessor类中generateToken()方法

1. //验证事务控制令牌,会自动根据session中标识生成一个隐含input代表令牌防止两次提交

2. 在action中:

       //if (!isTokenValid(request))          
    errors.add(ActionErrors.GLOBAL_ERROR,                     
    new ActionError("error.transaction.token"));      
    resetToken(request); //删除session中令牌

3. action有这样一个方法生成令牌

   protected String generateToken(HttpServletRequest request)
     catch (IllegalStateException e)
         catch (NoSuchAlgorithmException e)
          
        }

教程录入:xxYsh.com    责任编辑:admin 
发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口

推荐链接