1. 程式人生 > >Struts2數據操作(第二例)

Struts2數據操作(第二例)

res 不同 lis req tco 一個表 mil new result

action中對數據進行操作

1:結果頁面的配置

1.result標簽配置action方法的返回值到不同的路徑裏面

2.創建兩個action,都執行默認的方法execute方法,讓兩個action方法都返回success,返回success後配置到同一個頁面·

技術分享

弊端:結果頁面都一樣,返回值都一樣,但是太浪費了,於是我們引入了全局頁面

1)全局結果頁面

如果說多個action,方法裏面返回值相同的,到頁面也是相同的,這個時候用全局頁面

技術分享

2)局部結果頁面

技術分享

1》即配置了全局頁面,有配置了局部頁面,以局部頁面為準

技術分享

3)result標簽 的type屬性

1result標簽裏面除了

name屬性之外,還有一個屬性type

1type屬性:如何到路徑中去(轉發還是重定向)

2type屬性值

1)默認值,做轉發操作,值是dispatcher

技術分享

2)做重定向操作,值是 redirect

技術分享

這兩個值是針對頁面的配置,配置到其他的action裏面

-chain:轉發到action,一般不用,緩存問題

-redirectAction:重定向到action

技術分享

2:在action獲取表單提交數據

1:之前在web階段,提交表單到servlet裏面,在servlet裏面使用request對象裏面的方法獲取

getParameter,getParamterMap

2:提交表單到

action,但是action裏面沒有request對象,不能直接使用request對象

3action獲取表單數據,如下;

1)使用ActionContext類獲取

因為方法不是靜態的,所以要創建ActionContext對象

技術分享

這個方法對象不是new出來的

技術分享

具體做個演示

1)創建表單,提交表單到action裏面

2)在action使用ContextAction獲取數據,獲得request方法

2)使用ServletActionContext獲取

技術分享

可以調用類裏面的靜態方法,

技術分享

HttpServletRequest request=ServletActionContext.getRequest();

String username=request.getParameter("username");

String password=request.getParameter("password");

String address=request.getParameter("address");

3)使用接口註入方式獲取(一般不用)

1:讓action實現一個借口,得到一個request對象

技術分享

1:在action操作域對象:request,session,servletcontext:2:

2:使用ServletActionContext類操作

技術分享

3:struts提供獲取表單數據方式

使用最原始的方法封裝實現類對象

技術分享

1)屬性封裝

直接把表單提交的數據封裝到action的屬性裏面

實現步驟:

action成員變量位置定義變量

-變量名稱和表單輸入項的name屬性值一樣,這樣就直接通過裏面的名字調用裏面的set方法,設置值

生成變量set方法(把setget方法寫出來)

技術分享

3.使用屬性封裝獲取表單數據到屬性裏面,不能把數據直接封裝到實體對象裏面,於是我們用到了模型驅動方式

2)模型驅動封裝(重點)

直接把數據從表單封裝到一個實體類中去(如users

實現步驟:

1action實現接口 ModelDriven

技術分享

2)實現接口的方法getModel方法

-把我們創建的對象返回

技術分享

3.使用模型驅動和屬性封裝需要註意的問題

1)在一個action中,獲取表單數據可以屬性封裝,使用模型驅動封裝,不能同時使用屬性封裝和模型驅動封裝獲取同一個表單數據,兩個都用只會執行模型驅動,

3.表達式封裝(會用)

1實現過程

1)使用表達式封裝可以把表單數據封裝到實體類對象裏面

第一步:在action裏面聲明實體類

第二步:生成實體類變量的setget方法

技術分享

第三步 在表單輸入項的name屬性值裏面寫表達式形式

可以把表達式封裝歸類到屬性封裝裏面

比較表達式封裝和模型驅動

1:使用表達式封裝和模型封裝都可以把數據封裝到實體類對象裏面

2.不同點

1)使用模型驅動只能把數據封裝到一個實體類對象裏面。在一個action裏面不能使用模型驅

動把數據封裝到不同的實體類對象裏面

2)使用表達式可以把數據封裝到不同的實體類對象裏面

技術分享

技術分享

技術分享

4:struts獲取數據封裝於集合中(會用)

1)封裝到list集合

第一步 action聲明list

技術分享

第二步 生成list變量的getset方法

技術分享

第三步在表單輸入項 裏面寫表達式(第三天會用到s:iterator

技術分享

2)封裝到map中

聲明一個map集合

生成getset方法

第三步在表單輸入項 裏面寫表達式

Struts2數據操作(第二例)