<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 100  文章 - 50  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    收藏夾

    我收藏的一些文章!

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    前兩種是利用javascript,后面一種是在使用Struts的情況下的參考實現(xiàn)


    1 javascript ,設(shè)置一個變量,只允許提交一次。

    <script language="javascript">    
        var checkSubmitFlg = false;    
        function checkSubmit() {      
            if (checkSubmitFlg == true) {         
            return false; 
            }      
            checkSubmitFlg = true;      
            return true;   
            }   
            document.ondblclick = function docondblclick() 
            {    
            window.event.returnValue = false;   
            }   
            document.onclick = function doconclick() {       
            if (checkSubmitFlg) {         
            window.event.returnValue = false;       
            }   
        }
    </script>

    <html:form action="myAction.do" method="post" onsubmit="return checkSubmit();">


    2 還是javascript,將提交按鈕或者image置為disable


      <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)機制來解決Web應用中重復提交的問題,Struts也給出了一個參考實現(xiàn)。

    基本原理:

    服務(wù)器端在處理到達的請求之前,會將請求中包含的令牌值與保存在當前用戶會話中的令牌值進行比較,
    看是否匹配。在處理完該請求后,且在答復發(fā)送給客戶端之前,將會產(chǎn)生一個新的令牌,該令牌除傳給
    客戶端以外,也會將用戶會話中保存的舊的令牌進行替換。這樣如果用戶回退到剛才的提交頁面并再次
    提交的話,客戶端傳過來的令牌就和服務(wù)器端的令牌不一致,從而有效地防止了重復提交的發(fā)生。

        if (isTokenValid(request, true)) 
        {    // your code here    
            return mapping.findForward("success");
        } else 
        {    
            saveToken(request);    return mapping.findForward("submitagain");
        }

    Struts根據(jù)用戶會話ID和當前系統(tǒng)時間來生成一個唯一(對于每個會話)令牌的,具體實現(xiàn)可以參考
    TokenProcessor類中的generateToken()方法。

    1. //驗證事務(wù)控制令牌,<html:form >會自動根據(jù)session中標識生成一個隱含input代表令牌,防止兩次提交
    2. 在action中:

           //<input type="hidden" name="org.apache.struts.taglib.html.TOKEN"        //  value="6aa35341f25184fd996c4c918255c3ae">       if (!isTokenValid(request))           errors.add(ActionErrors.GLOBAL_ERROR,                      new ActionError("error.transaction.token"));       resetToken(request); //刪除session中的令牌

    3. action有這樣的一個方法生成令牌

       protected String generateToken(HttpServletRequest request) 
        {       HttpSession session = request.getSession();       
        try {           
            byte id[] = session.getId().getBytes();                   
            byte now[] =new Long(System.currentTimeMillis()).toString().getBytes();                   MessageDigest md = MessageDigest.getInstance("MD5");           
            md.update(id);           
            md.update(now);                   
            return (toHex(md.digest()));       
            } catch (IllegalStateException e) 
            {
                   return (null);       
            } catch (NoSuchAlgorithmException e) 
            {           
               return (null);       
            }   
            } 
    轉(zhuǎn)自網(wǎng)友
    posted on 2008-07-07 14:13 fly 閱讀(334) 評論(0)  編輯  收藏 所屬分類: jsp學習
    主站蜘蛛池模板: 女人18毛片a级毛片免费视频| 四虎影视无码永久免费| 又大又黄又粗又爽的免费视频 | 亚洲免费观看在线视频| 亚洲视频在线免费观看| 亚洲国产成人精品无码区二本 | 久久国产亚洲观看| 亚洲人成人无码.www石榴| 国产无人区码卡二卡三卡免费| 亚洲精品人成电影网| 91视频精品全国免费观看| 亚洲欭美日韩颜射在线二| 免费看搞黄视频网站| 亚洲最大福利视频网站| 麻豆视频免费观看| 亚洲狠狠婷婷综合久久蜜芽| 免费A级毛片无码久久版| 人人公开免费超级碰碰碰视频| 亚洲一区日韩高清中文字幕亚洲| 黄 色一级 成 人网站免费| 亚洲AV人无码激艳猛片| 1000部啪啪未满十八勿入免费| 亚洲1区1区3区4区产品乱码芒果| 成人毛片免费观看视频在线| 羞羞视频免费网站入口| 亚洲精品无码永久在线观看你懂的| 永久免费av无码入口国语片| 亚洲第一页在线观看| 日韩精品免费电影| 两个人看的www高清免费观看| 18gay台湾男同亚洲男同| 四虎成人免费网站在线| 久久免费香蕉视频| 亚洲欧洲另类春色校园小说| 日韩免费无砖专区2020狼| 中文在线免费视频| 亚洲区小说区图片区QVOD| 国产91免费视频| 一级免费黄色毛片| 亚洲成a人片在线观| 亚洲精品无码成人片在线观看|