日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Struts2中ValueStack结构和总结

發(fā)布時間:2023/12/19 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Struts2中ValueStack结构和总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

【ValueStack和ActionContext的關(guān)系】

?? 首先,從結(jié)構(gòu)上來看ValueStack是ActionContext的一個組成部分,是對ActionContext功能的擴展。ActionContext是一個容器結(jié)構(gòu),是Struts2中用于數(shù)據(jù)存儲的的場所,而ValueStack則是一個具備表達式引擎能力的數(shù)據(jù)結(jié)構(gòu),提供了一個可以進行表達式引擎的計算場所。Struts2將ValueStack置于ActionContext目的是為靜態(tài)的數(shù)據(jù)添加動態(tài)的計算能力。以下也是ValueStack和ActionContext的包含關(guān)系。

【ValueStack的結(jié)構(gòu)】

????ValueStack是XWork用以對Ognl計算進行擴展的一個特殊的數(shù)據(jù)結(jié)構(gòu),ValueStack從數(shù)據(jù)結(jié)構(gòu)的角度被定義為一組對象的集合,在進行Ognl計算時都被視作root對象,而Ognl是不支持多個root對象。ValueStack中的數(shù)據(jù),分兩個部分存放:root(對象棧)和context(一個map結(jié)構(gòu)):


????ValueStack有兩部分組成:Context和root獲取兩個對象的方法如下:

????1、向Context中存取對象的方法

????(1ActionContext.getContext()

?????????????.put(key,value);

???????????? .get(key);

??????????????????

????(2)ActionContext.getContext().getValueStack()

?????????????? .put(key,value);

???? ???? ? ?? .get(key);

????????????????????????????????

????2、向stack中存取對象的方法:

?? ?? ActionContext.getContext().getValueStack()

???????????????????? .push();

??? ???????????????? .pop();

????另外還要注意一點的是ognl表達式訪問request、session等作用域的對象前面要加#,如#request.user訪問request作用域的user對象,其原因也很容易理解,因為request、session等對象被封裝到了ValueStack的Context中,Context是一個Map結(jié)構(gòu),訪問Context中的內(nèi)容是要加#。

?????????????????????????????????????????????????????????????????????????




轉(zhuǎn)載于:https://blog.51cto.com/745761505/1537611

總結(jié)

以上是生活随笔為你收集整理的Struts2中ValueStack结构和总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。