亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

struts2數(shù)據(jù)處理_動力節(jié)點Java學(xué)院整理

 更新時間:2017年09月06日 11:04:12   投稿:mrr  
Struts2框架框架使用OGNL語言和值棧技術(shù)實現(xiàn)數(shù)據(jù)的流轉(zhuǎn)處理。下面通過本文給大家分享struts2數(shù)據(jù)處理的相關(guān)知識,感興趣的朋友參考下吧

Struts2框架框架使用OGNL語言和值棧技術(shù)實現(xiàn)數(shù)據(jù)的流轉(zhuǎn)處理。值棧就相當(dāng)于一個容器,用來存放數(shù)據(jù),而OGNL是一種快速查詢數(shù)據(jù)的語言。

 值棧:ValueStack一種數(shù)據(jù)結(jié)構(gòu),操作數(shù)據(jù)的方式為:先進后出

 OGNL : Object-GraphNavigation Language(對象圖形導(dǎo)航語言)將多個對象的關(guān)系使用一種樹形的結(jié)構(gòu)展現(xiàn)出來,更像一個圖形,那么如果需要對樹形結(jié)構(gòu)的節(jié)點數(shù)據(jù)進行操作,那么可以使用 對象.屬性 的方式進行操作,OGNL技術(shù)底層采用反射實現(xiàn)。 

一:數(shù)據(jù)的提交方式

,<form>表單提交
<form action="/user/login_Login.action" method="post" > 
  用戶代碼:<inputnameinputname="usercode" type="text" ><br> 
  用戶密碼:<inputnameinputname="userpswd" type="password"><br> 
       <inputtypeinputtype="submit" value="登錄"> 
</form> 

2,url的方式  

http://localhost.egov.com/user/login_Login.action?usercode=admin&userpswd=admin   

3,超鏈接

<a href="/user/delete.action?usercode=admin" rel="external nofollow" >刪除</a>  

4,異步提交

 ajax異步提交數(shù)據(jù)

二:數(shù)據(jù)存儲

 數(shù)據(jù)的存儲依賴于框架提供的攔截器功能,攔截器可以對請求進行攔截,獲取所有的請求參數(shù),循環(huán)遍歷設(shè)置到值棧中。框架默認將被請求的Action對象存放到值棧的棧頂。Struts2框架提供三種方式將參數(shù)存入值棧

1,屬性驅(qū)動模式

 Action中需要提供參數(shù)名稱的set方法,框架會通過攔截器將請求參數(shù)獲取到之后,會循環(huán)遍歷將參數(shù)設(shè)置到值棧(棧頂對象)中。

<input name="usercode" type="text" > 
Ognl.setValue("usercode",action,"admin");//此時根對象是action 

2,模型驅(qū)動模式

 必須要實現(xiàn)模型驅(qū)動接口,屬于侵入性開發(fā)方式,不推薦使用

 需要定義數(shù)據(jù)模型的類,將屬性封裝到數(shù)據(jù)模型類中,Action中只需要定義模型對象的類型屬性(必須創(chuàng)建對象賦值),模型對象的get/set屬性并不是必須的。

 Action類需要實現(xiàn)ModelDriven接口,重寫getModel()方法。

<inputnameinputname="usercode" type="text" ><br>表單依然是模型對象的屬性名稱作為參數(shù)名稱 
Ognl.setValue("usercode",user,"admin");//此時根(棧頂)對象是user對象 

3,域驅(qū)動模式

 與屬性驅(qū)動的原理是類似,也是通過參數(shù)攔截器,將請求參數(shù)獲取后循環(huán)設(shè)置到值棧中。

 在Action對象中定義模型對象屬性,并提供get/set方法;

 在表單元素中增加模型對象屬性的名稱;

<inputnameinputname="user.usercode" type="text" > 
Ognl.setValue("user.usercode",action,"admin");//此時根對象是action 

三:數(shù)據(jù)的傳遞

 框架將Http對象和包裝后的Map集合對象都存放到ActionContext上下文對象集合中。所以可以根據(jù)ActionContext來獲取想要使用的對象。 

1,獲取HTTP對象

ActionContext ac = ActionContext.getContext(); //上下文對象相當(dāng)于request范圍 
HttpServletRequest request =(HttpServletRequest)ac.get(StrutsStatics.HTTP_REQUEST); 
HttpSession session = request.getSession(false); 
ServletContext application = session.getServletContext(); 
ServletContext application = ac.get(StrutsStatics.SERVLET_CONTEXT); 
HttpServletRequest request = ServletActionContext.getRequest(); (推薦使用) 
HttpServletResponse response =ServletActionContext.getResponse(); 
Action類實現(xiàn)ServletRequestAware,或ServletResponseAware (屬于侵入性開發(fā)方式,不推薦使用) 
private HttpServletRequest request ; //set注入 
private HttpServletResponse response ; 
@Override 
public void setServletRequest(HttpServletRequest request) { //實現(xiàn)該方法,該方法由框架調(diào)用,傳遞參數(shù)。 
   this.request= request ; 
} 
@Override 
public void setServletResponse(HttpServletResponse response) { 
  this.response= response ; 
} 

2,獲取Map集合

ActionContext ac = ActionContext.getContext(); 
Mapsession = ac.getSession(); 
Mapsession2 =(Map)ac.get("session"); 
Mapsession3=(Map)ac.get(ActionContext.SESSION);     
Mapapplication = ac.getApplication() 
Mapapplication = ac.get(ActionContext.APPLICATION); 
Mapapplication = ac.get("application"); 

3, 獲取值棧對象以及參數(shù)集合對象

ActionContext ac = ActionContext.getContext(); 
ValueStack vs = ac.getValueStack(); 
 Map paramts = ac.getParameters(); 

四:數(shù)據(jù)的顯示

 用El表達式的形式,取request對象中的值

${requestScope.username } 

而這種表達式的方式可以表示成java代碼的方式:    

<% 
 Stringusername =(String)request.getAttribute("username");//被重寫的方法,底層是通過ognl查詢值棧中的數(shù)據(jù) 
 out.print(username); 
%>  

從request返回取數(shù)據(jù),實質(zhì)上底層是通過Ognl語言操作值棧中的數(shù)據(jù)。 ActionContext對象的集合和OgnlValueStack值棧的集合為同一個集合對象,所以從值棧的Map集合中取數(shù)據(jù),就相當(dāng)于從ActionContext上下文中取數(shù)據(jù)。

總結(jié)

以上所述是小編給大家介紹的struts2數(shù)據(jù)處理_動力節(jié)點Java學(xué)院整理,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評論