Web應用中重復提交的問題的三種解決方案 (轉)
前兩種是利用javascript,后面一種是在使用Struts的情況下的參考實現(xiàn):
1、javascript ,設置一個變量,只允許提交一次。
2、還是javascript,將提交按鈕或者image置為disable
3、利用struts的同步令牌機制
利用同步令牌(Token)機制來解決Web應用中重復提交的問題,Struts也給出了一個參考實現(xiàn)。
基本原理:
服務器端在處理到達的請求之前,會將請求中包含的令牌值與保存在當前用戶會話中的令牌值進行比較,
看是否匹配。在處理完該請求后,且在答復發(fā)送給客戶端之前,將會產(chǎn)生一個新的令牌,該令牌除傳給
客戶端以外,也會將用戶會話中保存的舊的令牌進行替換。這樣如果用戶回退到剛才的提交頁面并再次
提交的話,客戶端傳過來的令牌就和服務器端的令牌不一致,從而有效地防止了重復提交的發(fā)生。
Struts根據(jù)用戶會話ID和當前系統(tǒng)時間來生成一個唯一(對于每個會話)令牌的,具體實現(xiàn)可以參考TokenProcessor類中的generateToken()方法。
1. //驗證事務控制令牌,會自動根據(jù)session中標識生成一個隱含input代表令牌,防止兩次提交
2. 在action中:
3. action有這樣的一個方法生成令牌
1、javascript ,設置一個變量,只允許提交一次。
|
2、還是javascript,將提交按鈕或者image置為disable
|
3、利用struts的同步令牌機制
利用同步令牌(Token)機制來解決Web應用中重復提交的問題,Struts也給出了一個參考實現(xiàn)。
基本原理:
服務器端在處理到達的請求之前,會將請求中包含的令牌值與保存在當前用戶會話中的令牌值進行比較,
看是否匹配。在處理完該請求后,且在答復發(fā)送給客戶端之前,將會產(chǎn)生一個新的令牌,該令牌除傳給
客戶端以外,也會將用戶會話中保存的舊的令牌進行替換。這樣如果用戶回退到剛才的提交頁面并再次
提交的話,客戶端傳過來的令牌就和服務器端的令牌不一致,從而有效地防止了重復提交的發(fā)生。
|
Struts根據(jù)用戶會話ID和當前系統(tǒng)時間來生成一個唯一(對于每個會話)令牌的,具體實現(xiàn)可以參考TokenProcessor類中的generateToken()方法。
1. //驗證事務控制令牌,
2. 在action中:
|
3. action有這樣的一個方法生成令牌
|
posted on 2006-06-29 15:12 liaojiyong 閱讀(332) 評論(0) 編輯 收藏 所屬分類: Other