Struts2(十五) 解決表單的重複提交

2021-08-04 03:33:13 字數 915 閱讀 2778

一,重複提交及缺點

1.表單的重複提交:

若重新整理表單,再提交表單不算重複提交

在不重新整理表單的前提下:

注意:2.重複提交的缺點:

二,解決表單的重複提交

1.步驟:

(1)   在s:form標籤中新增s:token子標籤(struts 提供的 token 標籤可以用來生成乙個獨一無二的標記. 這個標籤必須巢狀在 form 標籤的內部使用, 它將在表單裡插入乙個隱藏欄位並把標記值(隱藏域的字段的值)儲存在httpsession 物件裡. )

(2)使用token或tokensession***棧(token 標籤必須與 token 或 tokensession ***配合使用, 這兩個***都能對標記進行處理. )

當瀏覽器第一次訪問這個帶有標籤的頁面時,在伺服器中,解析標籤的類(tokentag.class),會生成乙個隨機的字串(這個字串,檢視網頁的源**可以看到),並且傳送給客戶端的瀏覽器,同時,在伺服器中,會把這個隨機字串儲存到使用者的session物件中。當第一次提交表單時,在伺服器中,會比較客戶端和伺服器中分別儲存的這個隨機字串,因為是第一次提交,所以這兩個字串相等,然後進行正常的業務處理。

第一次提交後,在伺服器中的session中儲存的這個隨機字串,會改變為其他的隨機值,注意,這是很重要的一步!

此時,位址列停留在處理使用者提交資料的action中,客戶端中儲存的隨機字串沒有改變,若是重新整理頁面,即重複提交,伺服器再進行兩個字串的比較,會不相等,就會跳轉到name為

invalid.token

的結果頁面中,這樣就會防止表單重複提交了。

2.token***與tokensession***

3.可以使用s:actionerror標籤來顯示提交表單重複的錯誤資訊,該錯誤可以在國際化資源檔案中覆蓋,可以在struts-message-propertirs顯示

struts2 表單驗證

表單驗證有兩種方式,驗證和xml配置驗證器驗證。每種方法都可以設定全域性驗證和單個方法驗證。感覺單個方法用的多一點。例子 使用者註冊,進行驗證。表單如下 struts.xml配置資訊 userpkg extends struts default user class com.huitong.acti...

Struts2提交表單

1 動態方法呼叫,在struts.xml中開啟,實現效果為 constant name struts.enable.dynamicmethodinvocation value true http localhost 8080 struts2 m en submit login.action,動態方法...

struts2中使用Token避免表單重複提交

struts2中使用token避免表單重複提交 1.在jsp頁面使用標籤 2.在 棧中加入token 1.reg.jsp頁面 g method post 2.tokenaction頁面 package test.token import com.opensymphony.xwork2.actions...