使用Struts的Token機制解決表單的重複提交

2021-03-31 12:18:46 字數 634 閱讀 9701

struts的token(令牌)機制能夠很好的解決表單重複提交的問題,基本原理是:伺服器端在處理到達的請求之前,會將請求中包含的令牌值與儲存在當前使用者會話中的令牌值進行比較,看是否匹配。在處理完該請求後,且在答**送給客戶端之前,將會產生乙個新的令牌,該令牌除傳給客戶端以外,也會將使用者會話中儲存的舊的令牌進行替換。這樣如果使用者回退到剛才的提交頁面並再次提交的話,客戶端傳過來的令牌就和伺服器端的令牌不一致,從而有效地防止了重複提交的發生。

這時其實也就是兩點,第一:你需要在請求中有這個令牌值,請求中的令牌值如何儲存,其實就和我們平時在頁面中儲存一些資訊是一樣的,通過隱藏欄位來儲存,儲存的形式如: 〈input type="hidden" name=".apache.struts.taglib.html.token" value="6aa35341f25184fd996c4c918255c3ae"〉,這個value是tokenprocessor類中的generatetoken()獲得的,是根據當前使用者的session id和當前時間的long值來計算的。第二:在客戶端提交後,我們要根據判斷在請求中包含的值是否和伺服器的令牌一致,因為伺服器每次提交都會生成新的token,所以,如果是重複提交,客戶端的token值和伺服器端的token值就會不一致。下面就以在資料庫中插入一條資料來說明如何防止重複提交。 編輯

收藏

novnc 使用token訪問虛擬機器

環境 centos 7 虛擬機器埠 5900 5901 yum istall y git git clonecd novnc utils launch.sh vnc localhost 5900瀏覽器訪問http localhost 6080 vnc.html 或者http localhost 60...

struts2中t使用token防止重複提交表單

重複提交表單是一件令開發人員非常頭疼的事情,如何解決重複提交表單的問題是每個程式設計師都必須面對的事情,那麼在struts中該如何實現防止重複提交表單的事情呢?如下步驟可以實現 第一步 在表單中加上標籤,這個需要在頁面頭引入struts的標籤 使用者名稱 密碼 第二步 在struts.xml檔案中配...

Struts2中使用Token防止重複提交資料

如果防止表單的重複提交,可以在表單中加入 username password 然後在action配置中配置重複提交後跳轉頁面等 tokensuccess.jsp tokenfail.jsp token機制的原理是 當客戶端要訪問表單頁面時候向伺服器中傳送請求,伺服器會生成乙個隨機數放置到sessio...