專(zhuān)利名稱(chēng):一種防止用戶(hù)重復(fù)提交的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)信息科學(xué)領(lǐng)域,具體涉及一種防止用戶(hù)反復(fù)提交的方法和系統(tǒng)。
背景技術(shù):
隨著網(wǎng)絡(luò)的發(fā)展,計(jì)算機(jī)已成為人們生活不可或缺的一部分,在訪問(wèn)網(wǎng)站時(shí),經(jīng)常需要提交一些表單來(lái)進(jìn)行信息錄入,而對(duì)于性能不佳或程序運(yùn)行緩慢的計(jì)算機(jī)而言,頁(yè)面更新慢,使用者為確保表單遞交狀態(tài),會(huì)多次點(diǎn)擊“確定”的提示按鈕,從而導(dǎo)致表單重復(fù)提交,而使信息更新出現(xiàn)錯(cuò)誤。表單重復(fù)提交成為各大網(wǎng)站越來(lái)越棘手的問(wèn)題,不僅攻擊各大網(wǎng)站數(shù)據(jù)的安全性,而且還考驗(yàn)用戶(hù)的忍耐性。針對(duì)這一問(wèn)題,研究者提出通過(guò)一些防止措施,專(zhuān)利號(hào)為200910014312.7的中國(guó)發(fā)明專(zhuān)利《一種防止頁(yè)面重復(fù)提交的方法》,通過(guò)修改Struts的Token令牌機(jī)制,使一個(gè)頁(yè)面有多個(gè)token對(duì)象,每個(gè)token對(duì)象對(duì)應(yīng)多個(gè)url請(qǐng)求,所有token對(duì)象構(gòu)成一個(gè)循環(huán)隊(duì)列,token采用先進(jìn)先出的原則,實(shí)現(xiàn)多個(gè)form時(shí)的重復(fù)提交。這種方式是服務(wù)器端在處理到達(dá)的請(qǐng)求之前,會(huì)將請(qǐng)求中包含的令牌值與保存在當(dāng)前用戶(hù)會(huì)話中的令牌值進(jìn)行比較,看是否匹配。在處理完該請(qǐng)求后,且在答復(fù)發(fā)送給客戶(hù)端之前,將會(huì)產(chǎn)生一個(gè)新的令牌,該令牌除傳給客戶(hù)端以外,也會(huì)將用戶(hù)會(huì)話中保存的舊的令牌進(jìn)行替換。這樣如果用戶(hù)回退到剛才的提交頁(yè)面并再次提交的話,客戶(hù)端傳過(guò)來(lái)的令牌就和服務(wù)器端的令牌不一致,從而防止重復(fù)提交的發(fā)生。但這種方式客戶(hù)端與服務(wù)器端需要多次交互,由于要對(duì)token的令牌機(jī)制進(jìn)行修改,添加了很多相應(yīng)程序,對(duì)本身運(yùn)行速度就不高的于計(jì)算機(jī)而言可能會(huì)出現(xiàn)響應(yīng)遲緩甚至死機(jī)的狀況。此外,這種鎖屏功能也會(huì)受到操作系統(tǒng)模式、語(yǔ)言、框架等方面的影響而無(wú)法使用。
發(fā)明內(nèi)容
為解決上述問(wèn)題,本發(fā)明提供一種防止用戶(hù)重復(fù)提交的方法,在用戶(hù)點(diǎn)擊提交按鈕觸發(fā)表單,進(jìn)行提交的時(shí)候,觸發(fā)鎖屏功能,對(duì)屏幕進(jìn)行鎖屏,不能再次提交,阻止用戶(hù)執(zhí)行多次點(diǎn)擊命令,從而有效防止重復(fù)提交。此外,本發(fā)明還支持框架級(jí)別的鎖屏,通過(guò)自動(dòng)查找當(dāng)前頁(yè)面中被鎖屏的子框架對(duì)應(yīng)的父框架,實(shí)現(xiàn)跨框架鎖屏。本發(fā)明的方法主要步驟如下:1.觸發(fā)按鈕進(jìn)行表單提交;2.表單提交客戶(hù)端通過(guò)鎖屏模塊封裝的對(duì)外接口調(diào)用鎖屏模塊中封裝的js腳本文件,并引入到當(dāng)前的jsp頁(yè)面中,當(dāng)前頁(yè)面進(jìn)行鎖屏,此時(shí)引入鎖屏程序的計(jì)算機(jī)系統(tǒng)當(dāng)前窗口正常顯示但不能進(jìn)行操作,背景顏色為設(shè)定的顏色。同時(shí)表單提交客戶(hù)端發(fā)送HttpRequest請(qǐng)求到服務(wù)器端。3.服務(wù)器端接收到HttpRequest請(qǐng)求后,調(diào)用系統(tǒng)業(yè)務(wù)邏輯處理程序,處理信息。4.服務(wù)器端處理信息完畢后,以JSON的格式發(fā)送HttpResponse響應(yīng)到表單提交客戶(hù)端;5.鎖屏模塊通過(guò)對(duì)外接口接收響應(yīng)信息,并對(duì)接收到的JSON的響應(yīng)信息進(jìn)行解析,通過(guò)鎖屏模塊上的對(duì)外接口調(diào)用解屏程序,關(guān)閉函數(shù)解除鎖屏,并通過(guò)調(diào)用回調(diào)函數(shù)子功能進(jìn)行相關(guān)的業(yè)務(wù)操作。本發(fā)明還提供一種防止用戶(hù)重復(fù)提交的系統(tǒng),包括一鎖屏模塊和一表單提交客戶(hù)端(以下簡(jiǎn)稱(chēng)客戶(hù)端)和一服務(wù)器端,鎖屏模塊封裝在客戶(hù)端內(nèi),并對(duì)外提供接口方式,鎖屏模塊支持的功能包括:鎖屏大小、背景顏色、透明度、標(biāo)題、提示信息、打開(kāi)/關(guān)閉回調(diào)操作等,主要是用javascript、jquery腳本語(yǔ)言實(shí)現(xiàn),各功能是在父框架或子框架的基礎(chǔ)上進(jìn)行。關(guān)閉回調(diào)操作方便用戶(hù)在鎖屏解除的同時(shí)進(jìn)行一些有關(guān)業(yè)務(wù)系統(tǒng)方面的操作。本系統(tǒng)不拘于任何操作系統(tǒng)、任何語(yǔ)言、任何框架,只要實(shí)現(xiàn)接口兼容,即可實(shí)現(xiàn)全屏幕無(wú)差別鎖屏。由于本發(fā)明在用戶(hù)提交表單后,就會(huì)自動(dòng)對(duì)屏幕進(jìn)行封鎖,從而使用戶(hù)不能再次進(jìn)行表單提交,在網(wǎng)速比較慢或者是提交處于等待狀況下,會(huì)強(qiáng)制用戶(hù)等待,可完全避免因客戶(hù)多次點(diǎn)擊造成的表單重復(fù)遞交的情況。同時(shí),實(shí)踐表明,本發(fā)明能提高系統(tǒng)性能,加快系統(tǒng)的響應(yīng)時(shí)間,并具備跨平臺(tái)兼容多種瀏覽器的特性,適用于IE6+、Firefox、Chrome、Safar1、Opera以及iPad等移動(dòng)設(shè)備。
圖1是本發(fā)明的工作原理圖;圖2是本發(fā)明方法的流程圖;圖3是表單提交前頁(yè)面;圖4是表單提交中頁(yè)面;圖5是表單提交后頁(yè)面。
具體實(shí)施例方式以下結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的說(shuō)明。如圖1所示,本發(fā)明的系統(tǒng)是將鎖屏模塊和客戶(hù)端封裝在一起,鎖屏模塊上設(shè)置有對(duì)外接口,負(fù)責(zé)接收客戶(hù)端表單提交時(shí)的觸發(fā)信息和服務(wù)器端處理后的響應(yīng)信息,并在鎖屏模塊根據(jù)接收到的信息發(fā)出響應(yīng)的指令后對(duì)客戶(hù)端發(fā)送進(jìn)行鎖屏或解屏指令。如圖2所示,當(dāng)用戶(hù)需提交表單時(shí),點(diǎn)擊提交按鈕后,鎖屏程序被觸發(fā),當(dāng)前頁(yè)面顯示正常,但在按照業(yè)務(wù)系統(tǒng)要求被鎖屏對(duì)象被鎖的區(qū)域內(nèi),用戶(hù)無(wú)法繼續(xù)操作,支持單個(gè)框架、多個(gè)框架或全屏鎖屏。同時(shí)由鎖屏模塊中的javascript、jquery腳本語(yǔ)言可根據(jù)業(yè)務(wù)系統(tǒng)要求設(shè)置控制鎖屏區(qū)域的大小、背景顏色、透明度、標(biāo)題、提示信息等??蛻?hù)端將表單中的信息轉(zhuǎn)換為HttpRequest請(qǐng)求發(fā)送到服務(wù)器端,由服務(wù)器端接收后,調(diào)用系統(tǒng)業(yè)務(wù)邏輯處理程序,處理信息,然后將處理完成的HttpResponse信息以JSON的格式發(fā)送響應(yīng)到客戶(hù)端。鎖屏模塊通過(guò)對(duì)外接口接收該響應(yīng)信息,并對(duì)其進(jìn)行解析,通過(guò)鎖屏模塊上的對(duì)外接口調(diào)用解屏程序,中止鎖屏程序,解除鎖屏,并通過(guò)對(duì)外接口調(diào)用解除鎖屏回調(diào)函數(shù)進(jìn)行業(yè)務(wù)系統(tǒng)按照規(guī)定多功能業(yè)務(wù)操作,如取消先前設(shè)置的系統(tǒng)屏幕背景色等。實(shí)例代碼如下:
權(quán)利要求
1.一種防止用戶(hù)重復(fù)提交的方法,步驟包括: (1)觸發(fā)按鈕進(jìn)行表單提交; (2)表單提交客戶(hù)端將封裝的鎖屏js腳本文件引入到當(dāng)前jsp頁(yè)面,進(jìn)行鎖屏,同時(shí)表單提交客戶(hù)端發(fā)送HttpRequest請(qǐng)求到服務(wù)器端; (3)服務(wù)器端接收HttpRequest請(qǐng)求,調(diào)用系統(tǒng)業(yè)務(wù)邏輯處理程序,處理信息; (4)服務(wù)器端將處理完的信息發(fā)送HttpResponse響應(yīng)到表單提交客戶(hù)端; (5)表單提交客戶(hù)端把從步驟(4)接收的響應(yīng)信息發(fā)送給鎖屏模塊; (6)鎖屏模塊對(duì)步驟(5)中的響應(yīng)信息進(jìn)行解析,調(diào)用解屏程序進(jìn)行解屏,并進(jìn)行相關(guān)的業(yè)務(wù)操作。
2.如權(quán)利要求1所示的方法,其特征在于,所述步驟(2)中表單提交客戶(hù)端通過(guò)鎖屏模塊封裝的對(duì)外接口調(diào)用鎖屏模塊中封裝的js腳本文件。
3.如權(quán)利要求1所示的方法,其特征在于,所述步驟(4)中服務(wù)器端將處理完的信息以JSON的格式發(fā)送HttpResponse響應(yīng)到表單提交客戶(hù)端。
4.如權(quán)利要求1所示的方法,其特征在于,所述步驟(5)和步驟(6)中表單提交客戶(hù)端和鎖屏模塊之間通過(guò)對(duì)外接口進(jìn)行發(fā)送和接收響應(yīng)信息。
5.如權(quán)利要求1所示的方法,其特征在于,所述步驟(6)鎖屏模塊通過(guò)對(duì)外接口調(diào)用解屏程序,關(guān)閉函數(shù)接觸鎖屏。
6.如權(quán)利要求1所示的方法,其特征在于,所述步驟(6)鎖屏模塊通過(guò)調(diào)用回調(diào)函數(shù)子功能進(jìn)行相關(guān)的業(yè)務(wù)操作。
7.一種防止用戶(hù)重復(fù)提交的系統(tǒng),其特征在于,包括一鎖屏模塊、一表單提交客戶(hù)端和一服務(wù)器端,所述鎖屏模塊封裝在表單提交客戶(hù)端內(nèi),;所述表單提交客戶(hù)端與服務(wù)器端通信連接;所述鎖屏模塊負(fù)責(zé)調(diào)用封裝的鎖屏js腳本文件,并通過(guò)與表單提交客戶(hù)端間的通信實(shí)現(xiàn)鎖屏和解屏功能。
8.如權(quán)利要求7所示的系統(tǒng),其特征在于,所述鎖屏模塊提供對(duì)外接口。
9.如權(quán)利要求7所示的系統(tǒng),其特征在于,所述鎖屏模塊支持鎖屏大小、背景顏色、透明度、標(biāo)題、提示信息、打開(kāi)/關(guān)閉回調(diào)操作。
10.如權(quán)利要求7所示的系統(tǒng),其特征在于,所述鎖屏模塊可實(shí)現(xiàn)javascript、jquery腳本語(yǔ)言。
全文摘要
本發(fā)明提供一種防止用戶(hù)重復(fù)提交的方法和系統(tǒng),該系統(tǒng)包括一鎖屏模塊、一表單提交客戶(hù)端和一服務(wù)器端,在用戶(hù)點(diǎn)擊提交按鈕觸發(fā)表單,進(jìn)行提交的時(shí)候,觸發(fā)鎖屏模塊工作,對(duì)屏幕進(jìn)行鎖屏,不能再次提交,阻止用戶(hù)執(zhí)行多次點(diǎn)擊命令;在完成信息上傳后解除鎖屏,從而有效防止重復(fù)提交。本發(fā)明還支持框架級(jí)別的鎖屏,通過(guò)自動(dòng)查找當(dāng)前頁(yè)面中被鎖屏的子框架對(duì)應(yīng)的父框架,實(shí)現(xiàn)跨框架鎖屏。此外,本發(fā)明能提高系統(tǒng)性能,加快系統(tǒng)的響應(yīng)時(shí)間,并具備跨平臺(tái)兼容多種瀏覽器的特性。
文檔編號(hào)H04L29/08GK103152388SQ20131003914
公開(kāi)日2013年6月12日 申請(qǐng)日期2013年1月31日 優(yōu)先權(quán)日2013年1月31日
發(fā)明者張雷, 秦莎 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)信息中心