新聞中心
本篇內(nèi)容主要講解“防止重復(fù)提交的方法有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“防止重復(fù)提交的方法有哪些”吧!
創(chuàng)新互聯(lián)建站主要從事網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)房山,10余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792
1 javascript ,設(shè)置一個變量,只允許提交一次
2 還是javascript,將提交按鈕或者image置為disable
3 利用struts的同步令牌機制
利用同步令牌(Token)機制來解決Web應(yīng)用中重復(fù)提交的問題,Struts也給出了一個參考實現(xiàn)。 基本原理:
服務(wù)器端在處理到達的請求之前,會將請求中包含的令牌值與保存在當(dāng)前用戶會話中的令牌值進行比較,看是否匹配。在處理完該請求后,且在答復(fù)發(fā)送給客戶端之前,將會產(chǎn)生一個新的令牌,該令牌除傳給客戶端以外,也會將用戶會話中保存的舊的令牌進行替換。這樣如果用戶回退到剛才的提交頁面并再次提交的話,客戶端傳過來的令牌就和服務(wù)器端的令牌不一致,從而有效地防止了重復(fù)提交的發(fā)生。
if (isTokenValid(request, true)) { // your code here return mapping.findForward("success"); } else { saveToken(request); return mapping.findForward("submitagain"); } Struts根據(jù)用戶會話ID和當(dāng)前系統(tǒng)時間來生成一個唯一(對于每個會話)令牌的, 具體實現(xiàn)可以參考TokenProcessor類中的 generateToken()方法。 1.驗證事務(wù)控制令牌,會自動根據(jù)session中標(biāo)識生成一個隱含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) { 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); bmd.update(now); return (toHex(md.digest())); } catch (IllegalStateException e) { return (null); } catch (NoSuchAlgorithmException e) { return (null); } }
到此,相信大家對“防止重復(fù)提交的方法有哪些”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
文章名稱:防止重復(fù)提交的方法有哪些
網(wǎng)站URL:http://fisionsoft.com.cn/article/pojopc.html