国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

防止表單重復(fù)提交

2019-11-06 08:04:06
字體:
供稿:網(wǎng)友
為防止表單的重復(fù)提交,需要在前臺jsp頁面和后臺代碼里做如下事情:1、前臺jsp頁面這里只考慮IE和FF瀏覽器。1)調(diào)用判斷當(dāng)前瀏覽器類型的代碼function browserType(){    //取得瀏覽器的userAgent字符串    var userAgent = navigator.userAgent;     if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1            && !isOpera){        return "IE";    } ;    if (userAgent.indexOf("Firefox") > -1){        return "FF";    }    if (userAgent.indexOf("Opera") > -1){        return "Opera"    };    if (userAgent.indexOf("Chrome") > -1){        return "Chrome";    }    if (userAgent.indexOf("Safari") > -1){        return "Safari";    }}2)禁止瀏覽器后退(IE)或使提交按鈕變?yōu)椴豢捎茫‵F)A、若當(dāng)前為IE瀏覽器添加如下代碼禁止瀏覽器后退:<script type="text/javascript">     Javascript:window.history.forward(1); </script> 但若瀏覽器地址欄未發(fā)生變化,用戶仍可以在禁止重復(fù)提交頁面的后一個或后幾個頁面通過刷新頁面重復(fù)提交,所以還需要禁止用戶使用右擊菜單中的“刷新”和F5。B、若當(dāng)前為FF瀏覽器添加如下代碼使提交按鈕變?yōu)椴豢捎茫?("#submit").attr("disabled", "disabled");但用戶仍可以通過刷新頁面重復(fù)提交,所以同樣也需要禁止用戶使用右擊菜單中的“刷新”和F5。3)禁止右擊菜單中的“刷新”進(jìn)行重復(fù)提交document.oncontextmenu = function(){               return   false;           }4)禁止使用F5刷新頁面重復(fù)提交$(document).keydown(function(event){       if(event.keyCode==116){           return false;    }   }); 以下代碼可以起點(diǎn)輔助作用:<!-- 清除瀏覽器緩存 --><meta http-equiv="Expires" CONTENT="0">           <meta http-equiv="Cache-Control" CONTENT="no-cache">           <meta http-equiv="PRagma" CONTENT="no-cache">    以上js代碼可能不能對所有瀏覽器有效,所以還需要使用后臺代碼做最后防護(hù)。 2、后臺代碼struts2的token機(jī)制可以防止用戶重復(fù)提交:a)在<form>標(biāo)簽里添加<s:token/>標(biāo)簽;b)在struts2.xml里添加如下代碼:

<action name="regist" class="action.UserAction" method="regist">

    <interceptor-ref name="defaultStack"/>

    <interceptor-ref name="token/>

    <result>/userPages/login.jsp</result>

    <result name="invalid.token">/error.jsp?msg=不允許重復(fù)提交!</result>  

</action>

c)在error.jsp頁面里增加如下代碼:${param.msg}當(dāng)然我們也可以借鑒Struts2的token機(jī)制在原生的Servlet里實現(xiàn)我們自己的token機(jī)制:在regist()方法里增加如下代碼:String newsessionId = request.getSession().getSessionId();String oldSessionId= Cache.getSessionId();if(newSessionId.equals(oldSessionId)){    msg = "不允許重復(fù)提交!";    request.getRequestDispatcher("/userPages/regist.jsp").forward(request, response);}Cache.setSessionId(newSessionId);//調(diào)用服務(wù)層用戶注冊邏輯...再在/userPage/regist.jsp頁面增加如下代碼:${msg}上面的Cache是自定義的一個普通的緩存類。當(dāng)然上面的代碼有些細(xì)節(jié)可能有語法錯誤,但大致如此。以上可以做到完全禁止用戶重復(fù)提交,其實有了后臺Struts2的token機(jī)制,前臺頁面不用做任何操作,但為了減輕服務(wù)器的壓力,還是應(yīng)該先在頁面予以禁止。參考文檔:判斷當(dāng)前瀏覽器類型:http://blog.csdn.net/xianzi0828/article/details/7582408禁止頁面重復(fù)提交:http://waj952737.iteye.com/blog/972903Struts2的token機(jī)制:http://blog.csdn.net/yutian888/article/details/6376858頂0踩
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 电白县| 沛县| 萝北县| 新乡县| 临西县| 崇明县| 阳高县| 左贡县| 江源县| 成安县| 黔东| 房山区| 太和县| 阳城县| 武邑县| 五家渠市| 新津县| 平南县| 垦利县| 东方市| 尚志市| 高密市| 玛纳斯县| 瓦房店市| 易门县| 朝阳县| 绥芬河市| 德阳市| 永昌县| 延庆县| 张家界市| 金阳县| 翁牛特旗| 长治县| 平果县| 拜城县| 观塘区| 永宁县| 环江| 苗栗市| 鲜城|