struts中集合類型的轉換
在struts中支持的集合類型有list、map和set,利用這三種集合類型可以保存表單提交的數據,尤其是多個相同類型的數據,如在客戶端將一個含有表格的表單提交到服務器並保存到數據庫中。
圖1
如圖1.1所示,每一行都是一個學生對象,將這樣一組數據提交到服務器並保存到數據庫中時,服務器端就可以使用集合對象接受客戶端提交的數據了。
下面以上圖中的表單爲例,開始介紹這三種不同集合的類型轉換:
1、list集合轉換步驟
(1) 創建學生對象Student,包含name和age兩個屬性,並提供相應的get,set方法。
(2) 創建action的實現類Action,在該action中創建一個List集合,並提供對應的get,set方法,其泛型爲Student,但是這裏要取消泛型。
在和action相同的路徑下創建properties屬性文件,屬性文件的命名規則是:Action類名-conversion.properties
(3) 屬性文件中添加制定元素的集合類型
格式爲:Element_***=複合類型,其中***表示action中集合屬性的屬性名,複合類型是集合元素類型的完全屬性限定名,即集合泛型的屬性名,一般爲包名.類名。
(4) 創建視圖JSP頁面,在jsp中設置表單元素的name屬性值時要用
name=” list[0].age”、name=” list[0].name”這種格式,而不是一般的表單name=”name”.
(5)在action的訪問方法中進行數據庫操作,交獲取的值添加到數據庫中,這裏可以使用hibernate來實現。
(6)在action.xml文件中配置相關的訪問設置,然後訪問jsp即可。
關鍵代碼如下:
(1) action中創建集合對象,訪問函數和數據庫操作
圖2
圖3
(2) 屬性文件中的設置:
圖4
(3)JSP提交頁面中name屬性的設置。
圖5
2、map集合轉化步驟:
(1)創建學生對象Student,包含name和age兩個屬性,並提供相應的get,set方法。
(2)創建action的實現類Action,在該action中創建一個map集合,並提供對應的get,set方法,其泛型爲Student,不取消泛型,在和action相同的路徑下創建properties屬性文件,屬性文件的命名規則是:Action類名-conversion.properties
(3)屬性文件中添加制定元素的集合類型
格式爲:Key_***=複合類型,其中***表示action中集合屬性的屬性名,複合類型是集合元素類型的完全屬性限定名,即集合泛型的屬性名,一般爲包名.類名。
(4)創建視圖JSP頁面,在jsp中設置表單元素的name屬性值時要用
name=”map[‘a’].name”、name=”map[‘a’].age”這種格式,而不是一般的表單name=”name”.這裏的’a’值的是這一行數據的鍵,一般用字符串類型。
(5)在action的訪問方法中進行數據庫操作,交獲取的值添加到數據庫中,這裏可以使用hibernate來實現。
(6)在action.xml文件中配置相關的訪問設置,然後訪問jsp即可。
核心代碼如下:
(1) action中創建集合對象,獲取提交的數據並添加到數據庫中
圖6
圖7
(2) 屬性文件設置;
圖8
(3) jsp頁面表單提交name屬性設置
圖9
3、set集合類型轉換步驟:
步驟與list和 map的轉換步驟是一樣的,下面是不同之處的
(1) 屬性文件的設置不同
圖10
第一行表示:set集合通過關鍵字name來索引,因爲set是一個無序可重複的集合,只能用過關鍵字來獲取、添加、查找等操作。
第二行表示:action中的集合屬性名以及集合元素的類型,即對象的全路徑。
第三行表示:當沒有實例化集合屬性對象時,自動實例化。因爲set集合中要求實例化集合元素的屬性。
(2) 提交頁面表單name屬性的設置不同
圖11
makeNew[]是規定的寫法,一般name都寫成集合屬性名.makeNew[].集合元素屬性對象名,如:stuset.makeNew[2].name
主要就是以上兩點區別,代碼也基本相同,只要對list中的部分代碼稍加改動即可。
總之,以上三種集合類型的轉化原理,就是將客戶端提交的數據存儲在集合中,然後批量添加到數據庫中。
備註:這是我在CSDN上發的第一篇博客,我只是想用這樣一種方式來記錄學習過程,希望以後也能堅持分享自己的學習心得,用這種方式來督促自己培養謹慎、認真的學習態度,同時看到我博客的人,如果覺得哪裏不對,希望能提出來讓我改正,我會虛心學習的。