<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)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    收藏夾

    我收藏的一些文章!

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

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


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

    <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的同步令牌機(jī)制

    利用同步令牌(Token)機(jī)制來(lái)解決Web應(yīng)用中重復(fù)提交的問(wèn)題,Struts也給出了一個(gè)參考實(shí)現(xiàn)。

    基本原理:

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

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

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

    1. //驗(yàn)證事務(wù)控制令牌,<html:form >會(huì)自動(dòng)根據(jù)session中標(biāo)識(shí)生成一個(gè)隱含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有這樣的一個(gè)方法生成令牌

       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) 評(píng)論(0)  編輯  收藏 所屬分類: jsp學(xué)習(xí)
    主站蜘蛛池模板: 成人毛片18女人毛片免费视频未| 亚洲ts人妖网站| 国产免费久久精品| 69视频免费观看l| 久久不见久久见免费影院www日本| 中文字幕亚洲情99在线| 亚洲综合自拍成人| 国产亚洲av人片在线观看| 国产精品免费视频播放器| 99久久综合国产精品免费| 99在线观看精品免费99| 久久免费视频网站| xxxxx做受大片视频免费| 在线观看亚洲精品专区| 亚洲精品亚洲人成在线| 精品丝袜国产自在线拍亚洲| 久久精品国产亚洲av水果派| 亚洲AV日韩精品久久久久 | 亚洲另类自拍丝袜第五页| 亚洲av无码电影网| 亚洲欧洲日韩在线电影| 99ri精品国产亚洲| 久久精品国产亚洲AV嫖农村妇女| 亚洲成色在线综合网站| 亚洲成AV人在线播放无码| 亚洲真人日本在线| 国产精品亚洲αv天堂无码| 亚洲免费一区二区| 国产av无码专区亚洲国产精品 | 深夜福利在线免费观看| 国产AV无码专区亚洲AV琪琪| 国产精品亚洲lv粉色| 无码天堂va亚洲va在线va| 国产精品无码亚洲精品2021| 午夜亚洲乱码伦小说区69堂| 羞羞网站免费观看| 无码日韩人妻AV一区免费l| kk4kk免费视频毛片| 99re6在线精品免费观看| 成人性生交大片免费看中文| 日韩精品无码免费一区二区三区 |