Struts2接收批量提交資料解決方案

2021-06-20 04:55:58 字數 1046 閱讀 9407

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...