最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

struts2數(shù)據(jù)處理_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

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

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

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

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

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

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

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

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

2,模型驅(qū)動(dòng)模式

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

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

 Action類(lèi)需要實(shí)現(xiàn)ModelDriven接口,重寫(xiě)getModel()方法。

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

3,域驅(qū)動(dòng)模式

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

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

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

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

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

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

1,獲取HTTP對(duì)象

ActionContext ac = ActionContext.getContext(); //上下文對(duì)象相當(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類(lèi)實(shí)現(xiàn)ServletRequestAware,或ServletResponseAware (屬于侵入性開(kāi)發(fā)方式,不推薦使用) 
private HttpServletRequest request ; //set注入 
private HttpServletResponse response ; 
@Override 
public void setServletRequest(HttpServletRequest request) { //實(shí)現(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, 獲取值棧對(duì)象以及參數(shù)集合對(duì)象

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

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

 用El表達(dá)式的形式,取request對(duì)象中的值

${requestScope.username } 

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

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

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

總結(jié)

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

相關(guān)文章

  • 使用maven編譯Java項(xiàng)目實(shí)例

    使用maven編譯Java項(xiàng)目實(shí)例

    這篇文章主要介紹了使用maven編譯Java項(xiàng)目實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下
    2019-06-06
  • 關(guān)于BufferedReader的read()和readLine()的區(qū)別

    關(guān)于BufferedReader的read()和readLine()的區(qū)別

    這篇文章主要介紹了關(guān)于BufferedReader的read()和readLine()的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 淺談Java工程讀取resources中資源文件路徑的問(wèn)題

    淺談Java工程讀取resources中資源文件路徑的問(wèn)題

    下面小編就為大家?guī)?lái)一篇淺談Java工程讀取resources中資源文件路徑的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • SpringCloud中的Stream服務(wù)間消息傳遞詳解

    SpringCloud中的Stream服務(wù)間消息傳遞詳解

    這篇文章主要介紹了SpringCloud中的Stream服務(wù)間消息傳遞詳解,Stream 就是在消息隊(duì)列的基礎(chǔ)上,對(duì)其進(jìn)行封裝,可以是我們更方便的去使用,Stream應(yīng)用由第三方的中間件組成,應(yīng)用間的通信通過(guò)輸入通道和輸出通道完成,需要的朋友可以參考下
    2024-01-01
  • 在Web項(xiàng)目中手機(jī)短信驗(yàn)證碼實(shí)現(xiàn)的全過(guò)程記錄

    在Web項(xiàng)目中手機(jī)短信驗(yàn)證碼實(shí)現(xiàn)的全過(guò)程記錄

    這篇文章主要給大家介紹了關(guān)于在Web項(xiàng)目中實(shí)現(xiàn)短信驗(yàn)證碼的全過(guò)程記錄,文中通過(guò)示例代碼介紹的非常詳細(xì),在文末跟大家提供了源碼下載,需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • JavaFX實(shí)現(xiàn)拖拽結(jié)點(diǎn)效果

    JavaFX實(shí)現(xiàn)拖拽結(jié)點(diǎn)效果

    這篇文章主要為大家詳細(xì)介紹了JavaFX實(shí)現(xiàn)拖拽結(jié)點(diǎn)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • java實(shí)現(xiàn)無(wú)符號(hào)數(shù)轉(zhuǎn)換、字符串補(bǔ)齊、md5、uuid、隨機(jī)數(shù)示例

    java實(shí)現(xiàn)無(wú)符號(hào)數(shù)轉(zhuǎn)換、字符串補(bǔ)齊、md5、uuid、隨機(jī)數(shù)示例

    這篇文章主要介紹了java實(shí)現(xiàn)無(wú)符號(hào)數(shù)轉(zhuǎn)換、字符串補(bǔ)齊、md5、uuid、隨機(jī)數(shù)示例,需要的朋友可以參考下
    2014-04-04
  • idea web項(xiàng)目沒(méi)有小藍(lán)點(diǎn)的的兩種解決方法

    idea web項(xiàng)目沒(méi)有小藍(lán)點(diǎn)的的兩種解決方法

    本文主要介紹了idea web項(xiàng)目沒(méi)有小藍(lán)點(diǎn)的的兩種解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java基礎(chǔ)教程之接口的繼承與抽象類(lèi)

    Java基礎(chǔ)教程之接口的繼承與抽象類(lèi)

    這篇文章主要介紹了Java基礎(chǔ)教程之接口的繼承與抽象類(lèi),本文介紹了接口繼承、接口的多重繼承以及抽象類(lèi)的知識(shí),需要的朋友可以參考下
    2014-09-09
  • Eclipse Web項(xiàng)目打成war包的方法圖解

    Eclipse Web項(xiàng)目打成war包的方法圖解

    當(dāng)Tomcat啟動(dòng)后該壓縮文件自動(dòng)解壓縮,war包方便了web工程的發(fā)布,那么Eclipse中如何將Web項(xiàng)目打成war包呢?下面小編通過(guò)圖文并茂的方式給大家講解下Eclipse Web項(xiàng)目打成war包的方法,一起看看吧
    2016-08-08

最新評(píng)論

宜章县| 黎城县| 当雄县| 福清市| 马山县| 琼结县| 陇西县| 舒城县| 和田市| 元氏县| 灵川县| 福泉市| 公主岭市| 贵德县| 武清区| 沭阳县| 庄浪县| 万源市| 奉节县| 西峡县| 靖远县| 改则县| 乐亭县| 上犹县| 松潘县| 吕梁市| 海丰县| 榆中县| 麻阳| 黑水县| 林州市| 青海省| 安陆市| 新乡市| 博湖县| 江门市| 大冶市| 西丰县| 内黄县| 佛坪县| 屯门区|