一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - struts2數據處理_動力節點Java學院整理

struts2數據處理_動力節點Java學院整理

2020-12-29 14:30動力節點 Java教程

Struts2框架框架使用OGNL語言和值棧技術實現數據的流轉處理。下面通過本文給大家分享struts2數據處理的相關知識,感興趣的朋友參考下吧

Struts2框架框架使用OGNL語言和值棧技術實現數據的流轉處理。值棧就相當于一個容器,用來存放數據,而OGNL是一種快速查詢數據的語言。

 值棧:ValueStack一種數據結構,操作數據的方式為:先進后出

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

一:數據的提交方式

?
1
2
3
4
5
6
,<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,超鏈接

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

4,異步提交

 ajax異步提交數據

二:數據存儲

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

1,屬性驅動模式

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

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

2,模型驅動模式

 必須要實現模型驅動接口,屬于侵入性開發方式,不推薦使用

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

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

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

3,域驅動模式

 與屬性驅動的原理是類似,也是通過參數攔截器,將請求參數獲取后循環設置到值棧中。

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

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

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

三:數據的傳遞

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

1,獲取HTTP對象

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ActionContext ac = ActionContext.getContext(); //上下文對象相當于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類實現ServletRequestAware,或ServletResponseAware (屬于侵入性開發方式,不推薦使用)
private HttpServletRequest request ; //set注入
private HttpServletResponse response ;
@Override
public void setServletRequest(HttpServletRequest request) { //實現該方法,該方法由框架調用,傳遞參數。
   this.request= request ;
}
@Override
public void setServletResponse(HttpServletResponse response) {
  this.response= response ;
}

2,獲取Map集合

?
1
2
3
4
5
6
7
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, 獲取值棧對象以及參數集合對象

?
1
2
3
ActionContext ac = ActionContext.getContext();
ValueStack vs = ac.getValueStack();
 Map paramts = ac.getParameters();

四:數據的顯示

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

?
1
${requestScope.username }

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

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

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

總結

以上所述是小編給大家介紹的struts2數據處理_動力節點Java學院整理,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99热这里只有精品久久免费 | 日本丰满www色 | 国产卡一卡二卡四卡无卡 | 99国产在线视频 | 精品在线视频一区 | 色综色| 桥本有菜ssni-677在线观看 | 好大好猛好爽好深视频免费 | 国产精品99爱免费视频 | 免费在线影院 | 性做久久久久久久久老女人 | 欧美一级特黄刺激大片视频 | china国产bbw| 久久伊人电影 | 日本丰满www色 | 亚洲欧洲日产国码 最新 | 色老妈 | 楚乔传第二部免费观看全集完整版 | 久久精品国产色蜜蜜麻豆国语版 | 精品91自产拍在线观看99re | 亚洲成人网导航 | aigao视频| 日本免费观看95视频网站 | 91久久青青草原线免费 | 被调教的校花 | 激情自拍网 | 国产亚洲精品综合在线网址 | 成人伊人亚洲人综合网站222 | 好看的亚洲视频 | 国产欧美日韩亚洲精品区2345 | 四虎影院在线免费观看 | 国产第一综合另类色区奇米 | 日韩欧美在线看 | fc2免费人成为视频 eeuss18影院www国产 | 国产麻豆剧果冻传媒观看免费视频 | 日韩成人在线免费视频 | 俄罗斯一级毛片免费播放 | 成人a级特黄毛片 | 亚洲好色网 | 欧美日韩一二三区免费视频观看 | 美女扒开胸罩露出奶了无遮挡免费 |