struts2接收批量提交資料解決方案
說明:解決頁面大批量提交資料到後台,封裝物件,持久化到資料庫,
此文件對比了兩種方式(物件集合接收、屬性陣列接收)
環境:ssh2+jsp+js
測試基數:一千條資料批量提交
第一種方式:物件集合接收
action中物件集合定義:
private listuserlist;構造get和set方法
jsp頁面屬性定義:
...優點:
後台獲取資料直接是封裝好的user物件,各屬性值已經自動set進去了,直接迴圈入庫即可如:
for (user user : userlist)
缺點:如果頁面有js插入行,或者新增操作,或者刪除其中某行時,userlist索引就會重複或者缺失,
解決思路可以每新增一行通過js去修改各行中文字框name索引值使其不重複和
1千條測試用時30s才進入到action並且輸出資訊(未測試入庫)
第二種方式:屬性陣列接收
action中屬性陣列定義:
private string usernames;構造get和set方法
jsp頁面屬性定義:
...優點:
頁面不需要考慮通過js新增/刪除操作對其username陣列大小索引的影響,後台得到陣列即可
缺點:後台獲取陣列後需要對各個屬性進行封裝user物件操作,並且action需要對每乙個屬性定義的陣列
for (int i = 0; i < usernames.length; i++)
1千條測試用時30s才進入到action並且輸出資訊(未測試入庫)
從效率考慮,經過測試1千條資料批量提交資料(物件的屬性為1個)來看,前端js遍歷修改索引速度慢於後台批量建立物件的速度;
個人建議:
1.如果數目小於1千,考慮到後台action定義陣列的繁瑣,在物件屬性較多情況下使用第一種方式比較好。
2.如果數目大於1千,考慮到前端每次js操作很有可能導致瀏覽器卡死,在物件屬性不多情況下使用第二種方式比較好。
struts2 接收引數
1 採用基本型別接收請求引數 get post 在action類中定義與請求引數同名的屬性,struts2便能自動接收請求引數並賦予給同名屬性。請求路徑 do?id 23 name sss public class productaction private integer id public vo...
Struts2提交表單
1 動態方法呼叫,在struts.xml中開啟,實現效果為 constant name struts.enable.dynamicmethodinvocation value true http localhost 8080 struts2 m en submit login.action,動態方法...
struts2自動接收表單資料
提交頁面主要 action類 package action import org.apache.struts2.servletactioncontext import com.opensymphony.xwork2.actionsupport public class messageaction e...