實現原理:
1、頁面和後台同步存入乙個token,一旦重新整理頁面,此token都是會重新整理的
2、提交表單時,會帶上這個標識token
3、請求後台,將此token和後台存入的token比對
3.1 校驗token通過,成功提交表單,並移除token
3.2 校驗token不通過,給出前端提示,但不做移除token
3.3 校驗token通過,但表單校驗不通過時,給出前端提示,但不做移除token
針對第一點,如果是頁面是jsp,可在**頁面時使用切面生成token並存入redis或者session等
如果是前後端分離型,也可在頁面統一生成token,生成時請求後台存入redis等。
在不考慮對接前端,本文先以**形式說明後端實現
一、切點,表示需要防重複提交的地方
* 防重複提交切點註解
* @author xingzi.qi
@target(elementtype.method)
@retention(retentionpolicy.runtime)
public @inte***ce latechtoken else
@afterreturning(value= "pointcut()",returning = "object")
public void afterreturning(joinpoint joinpoint,object object){
if(object instanceof messagebean){
messagebean messagebean = (messagebean)object;
//表單提交成功時,刪除redis裡的token
一點說明:
這裡會選擇切面和***結合,是因為最開始用***,無法拿到方法的返回值,無法判斷表單時成功提交與否,故加入了切面。
只用切面來實現,我就沒有再去嘗試了,如果有朋友們嘗試到更好更簡單的方式,歡迎曬出來
防止表單重複提交
新增乙個使用者時,發現重複新增了4 5個,原來是重複提交了。怎麼解決這個問題呢,起初是在後端檢查新增的屬性是否已有,例如姓名和手機號是否重複,如果重複就不儲存,沒想到後來隨著業務的複雜化,新增乙個使用者所需時間越來越長,以致在檢查時還沒插入完畢。那就在提交時就關閉form,可是這樣一來,如果後端檢查...
防止表單重複提交
防止表單重複提交 問題 什麼是表單重複提交?regist.jsp registservlet 表單重複提交 危害 刷票 重複註冊 帶來伺服器訪問壓力 拒絕服務 解決方案 在頁面上生成乙個令牌 就是乙個隨機字串 將其儲存到session中,並在表單中攜帶.在伺服器端,獲取資料時,也將令牌獲取,將它與s...
防止重複提交表單
public class refreshserve system.web.ui.page else 呈現前更新標識 protected override void onprerender eventargs e 更新標識,正常提交都刪除該次提交的時間,並生產當前新的時間 private void u...