java防止重復(fù)請求 springmvc如何防止表單重復(fù)提交?
springmvc如何防止表單重復(fù)提交?1. 在網(wǎng)站.xml定義一個前端控制器來攔截用戶發(fā)送的請求;2。如果您需要在post模式下提交請求,則需要定義一個包含表單的JSP頁面;如果您只在get模式下提
springmvc如何防止表單重復(fù)提交?
1. 在網(wǎng)站.xml定義一個前端控制器來攔截用戶發(fā)送的請求;
2。如果您需要在post模式下提交請求,則需要定義一個包含表單的JSP頁面;如果您只在get模式下提交請求,則不需要執(zhí)行此步驟;
3。定義一個用戶請求的處理類,可以實現(xiàn)controller接口,也可以使用annotation;如果使用annotation,則可以使用annotation解決方案中需要的方式springMvc.xml文件在中配置包掃描儀;
4。配置處理程序和Spring2.5以推薦使用注解
5。寫視圖資源;例如上圖
兩種防止表單重復(fù)提交的方法1)通過重定向和請求轉(zhuǎn)發(fā)添加表單內(nèi)容會導(dǎo)致重復(fù)插入內(nèi)容。當(dāng)向servlet發(fā)送添加記錄的請求時,servlet首先向數(shù)據(jù)庫添加記錄,然后查詢數(shù)據(jù)庫中的所有數(shù)據(jù),然后將其轉(zhuǎn)發(fā)到另一個頁面。此時,頁面上瀏覽器的地址顯示servlet的地址。當(dāng)用戶刷新頁面時,它會向servlet發(fā)送一個add請求,這將導(dǎo)致數(shù)據(jù)庫中的數(shù)據(jù)丟失重復(fù)數(shù)據(jù)正在增加。解決方案:通過重定向添加數(shù)據(jù)不會導(dǎo)致重復(fù)插入或刪除數(shù)據(jù)。當(dāng)add請求被發(fā)送到servlet時,servlet只執(zhí)行add操作,然后重定向到另一個servlet進行數(shù)據(jù)查詢,最后轉(zhuǎn)發(fā)到顯示頁面。2) 通過session Token(session Token)當(dāng)客戶端第一次向服務(wù)器發(fā)送請求時,服務(wù)器會傳遞Token標(biāo)簽,將字符串放入會話,然后將字符串發(fā)送給客戶端。提交之前,頁面上有一個字符串,服務(wù)器上有一個字符串。兩個字符串的內(nèi)容相同。提交時,服務(wù)器將比較這兩個字符串,看它們是否相同。如果它們相同,則將第一次提交它們,并更新服務(wù)器端字符串。如果再次提交,則服務(wù)器端字符串已更改,但頁字符串未更改。此時,當(dāng)您提交時,兩個字符串將不匹配,并且服務(wù)器端字符串將被更新以為這是第二次提交,這樣服務(wù)器就不會讓它再次提交,然后轉(zhuǎn)向無效的.token<結(jié)果>頁面。就像兩個豌豆一樣,第二次提交與第一次提交給服務(wù)器的JSP頁面相同。當(dāng)瀏覽器返回上一頁時,內(nèi)容和第一語言也很容易翻譯,因此提交將失敗。當(dāng)?shù)谝煌矸祷貢r,刷新相當(dāng)于向服務(wù)器發(fā)送一個請求,因此這是提交的。它可以成功。