Spring MVC如何防止重複提交?類似Struts Token機制!

來源:互聯網
上載者:User

首先,需要將繼承了SimpleFormController之類的sessionForm設為true。這樣,在顯示一個新表單時,Spring會將command存放在session中,而在提交表單時,Spring會從session中取出此command,隨後立即從session中刪除存放command的attribute。如果發現在session中沒有command,Spring將其斷定為重複提交,轉而執行handleInvalidSubmit(request, response),可覆蓋此方法負責防止重複提交的任務。可以這麼說,當setSessionForm(true)之後,如果沒有先後經曆顯示表單、提交表單的過程,就會被認為是重複提交表單。而有一些情況下卻必須重複提交表單,如,修改資料庫的資料後,試圖寫入資料庫時因某些異常失敗,如果此時異常被當前頁面捕獲並依舊返回當前頁面,由於command已經被Spring在後台從session中移走,因此,就被認為是無效重複提交,從而導致第二次經修改後的記錄無法正確提交到資料庫中。handleInvalidSubmit()必須考慮到這種情況。

-------------------------------------------------------------------------------------------------

方法2

樓上提供的方法比較麻煩。
我在項目中使用過一種比較簡單的方法,就是使用一個Filter,設定request的參數,使禁止Browser對頁面進行緩衝,通過這種變通的方式來解決。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.