表單重複提交------同一表單的內容多次重複提交到伺服器
比如插入資料時,同一表單多次提交,就會在資料庫中插入多條重複的該條記錄,造成嚴重的問題
表單重複提交分為三種情況:
1.提交完表單以後,不做其他操作,直接重新整理頁面,表單會提交多次。
- 這種情況產生的根本原因是,servlet處理完請求以後,直接**到目標頁面。
- 這樣整乙個業務,只傳送了一次請求,那麼當你在瀏覽器中點選重新整理按鈕或者狂按f5會一直都會重新整理之前的請求
解決方案:在servlet中使用重定向跳轉到目標介面,尤其是在增刪改資料時,不能使用**跳轉。
2.在提交表單時,如果網速較差,可能會導致點選提交按鈕多次,這種情況也會導致表單重複提交。
- 產生的原因:是因為咱們的提交按鈕可以點選多次。
解決方案:使提交按鈕只能點選一次。這事咱們得通過js來完成。
window.onload = function();3.表單提交成功以後,直接點選瀏覽器上回退按鈕,不重新整理頁面,然後點選提交按鈕再次提交表單。};
- 產生的原因:
因為伺服器在處理請求時,不會檢查是否為重複提交的請求。
- 解決方案:
使用乙個token的機制。
- token就是令牌的意思。
- 伺服器在處理請求之前先來檢查瀏覽器的token。
- token由伺服器來建立,並交給瀏覽器,瀏覽器在向伺服器傳送請求時需要帶著這個token
- 伺服器處理請求前檢查token是否正確,如果正確,則正常處理,否則返回乙個錯誤頁面
- 伺服器所建立的token只能使用一次。
- token一般使用乙個唯一的標識。
登入頁面**:
uuid uuid=uuid.randomuuid();loginservlet中的**:string id=uuid.tostring();
session.setattribute("uid", id);
%>
}第三種問題的解決方法同時可以解決前兩種問題
表單重複提交問題
要能夠防止表單重複提交,就要標識使用者的每一次訪問請求,使得每一次訪問對服務端來說都是唯一確定的 為了標識使用者的每次訪問請求,可以在使用者請求乙個表單域時增加乙個隱藏表單項,這個表單項的值每次都是唯一的 token 如 formid form method post input type hidd...
表單重複提交
1.session token的方式 當表單載入時候,前端向伺服器申請乙個token,同時,伺服器將token放在session中。當提交表單時候,引數中帶著token,伺服器校驗token,如果相同則放行,同時清除session。如果不同,則說明重複提交。需要注意的是,如果請求返回了,或者重新整理...
防止表單重複提交
新增乙個使用者時,發現重複新增了4 5個,原來是重複提交了。怎麼解決這個問題呢,起初是在後端檢查新增的屬性是否已有,例如姓名和手機號是否重複,如果重複就不儲存,沒想到後來隨著業務的複雜化,新增乙個使用者所需時間越來越長,以致在檢查時還沒插入完畢。那就在提交時就關閉form,可是這樣一來,如果後端檢查...