解決jsp表單重複提交問題__js

來源:互聯網
上載者:User

方法一:利用同步令牌(Token)機制來解決Web應用中重複提交的問題

 

這種做法只能是解決問題的一種做法,不過在大型項目中不可能用這種做法,此種做法不能根本解決問題,可以通過重寫URL跳過JS校正一樣提前到後台去。
一般項目中都是用令牌機制處理這個問題(以struts為例)

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

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

struts1點麻煩,故此處不提供用例。
struts2就做得很好,只要是<s:form></s:form>這間加上<s:token/>就可以自動完成重複提交(原理同上

 

 

方法二:js

http://www.ibeifeng.com/bbs/read-htm-tid-13978.html

 

我提供一個簡單的方案用JavaScript解決
在表單中寫一個隱藏欄位<input   type="hidden"  value="false"   name="resubmit "/>   
如果第一次提交,就改變value="true"   ;   
再次提交時候,可以用JS 在用戶端判斷hidde值  
    
var   resubmit =  false;   
function   checkCFSubmit()   
{   
        if  (resubmit )   
        {   
         return   false;   
        }   
        else   
        {   
          resubmit=   true;   
         return   true;   
}   

然後在<form>中添加onsubmit="javascript:return  checkCFSubmit();"

 

 

 

 

問題1

CSS樣式單的基本應用

 

問題2

Dojo的使用,實現動態效果,jar包的引入

 

 

問題3

 

顯示時間的js組件,下載使用

 

 

問題4  以及菜單如何?層級顯示,是屬於html標籤嗎,還是屬於表單(有序表單、無序表單)

 

 

問題5  HTML5

 

 

問題6  XML

 

 

問題7  Spring的思想

 

 

問題8 Hibernate的事務控制

 

 

問題9 存取權限控制實現,開發一個小模組,測試一下。

 

 

問題10  安裝oracle  找到我的留言板項目,實現BBS 分頁,暱稱,頭像,按照關鍵詞搜尋。。。(搜尋引擎有沒有現有的開源組件直接借鑒使用,按照使用者名稱搜尋使用者的留言,管理自己的留言,回複功能。。。。)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.