struts2簡要概述二

2021-08-20 07:49:11 字數 2017 閱讀 6395

值棧(valuestack),是

struts2

的資料中轉站

,棧中自動儲存了當前action物件和其他相關物件(包括常用的

web物件的引用,如

request

、session

、等),也可以手動儲存自己的資料物件,同時也可以

隨時隨地

將物件從值棧取出或操作(通過ognl表示式)

值棧(valuestack),實際是乙個介面的物件的稱呼

,介面是

valuestack

類,實現類是

ognlvaluestack

類,該物件是

struts2

利用ognl

的基礎,或者說

struts2

中ognl

使用都是基於值棧完成的。

如何理解資料中轉站?

其實可以將它看成是乙個容器,是乙個臨時的資料庫,為什麼是臨時的呢?因為它只存在於記憶體中

作為乙個資料庫倉庫,存放的是那些資料呢?

答:比如request、

session

、這些物件以及這些物件中的資料,都存在於值棧中

存放的目的:取值(頁面中取值)

struts2

框架將valuestack

物件儲存在request域中,鍵為「

struts.valuestack

」,即值棧是

request

域中的乙個物件,乙個請求對應乙個

action

例項和乙個值棧物件。

在值棧的內部有兩個邏輯部分:

l objectstack(物件棧)

:又稱為root棧,儲存了

action

的相關物件和動作,

資料儲存結構是list。

l contextmap(上下文棧)

:又稱為map棧,儲存了各種對映關係,如常用的

web物件的引用,

資料儲存結構是map。

【示例1】

值棧的獲取方式:

1) request.getattribute(「struts.valuestack」):用的較少

2) actioncontext.getcontext().getvaluestack():用的非常多

:底層使用的還是第一種方式獲取

actioncontext(

action

上下文,工具類)

【值棧小結】:

值棧包括兩部分:

物件棧(

root棧,

compoundroot,

繼承了arraylist集合

)和ognl上下文棧(

map棧,

ognlcontext,實現

map介面)

而ognl上下文棧(map棧)內部又分為兩部分:物件棧(

root

)的引用和乙個hashmap

,這個hashmap存放了常用web物件的引用和其他對映關係。

值棧的主要作用就是資料的儲存和獲取(可以在任何地方獲取)。

注意要點

:怎麼存,就怎麼取

存進root棧

,就不通過#獲取;

存進map棧,就通過#獲取

1. 如何向值棧儲存資料

1) valuestack.push(obj)

:儲存資料到root

棧頂-壓棧頂(物件本身)-匿名

2) actioncontext.getcontext().put(key,value)

:儲存資料到

map棧

中3) valuestack.set(key,value):將資料儲存到

root棧頂

(資料物件自動被封裝為map來儲存,棧頂是個

map,

map裡面有個屬性是物件)

--有名字

4) 提供action成員變數,提供

getter

方法(action

就在root

棧中,action

屬性可以被搜尋)

Struts2 入門概述

struts2 入門概述 struts2 主要是通過匯入struts2的jar包,通過struts2的struts.xml配置 和struts的 執行視 件,到客戶端。struts2部署 基本步驟 1 新建web project 單擊 finish 完成。2 匯入struts2 jar包 3 配置p...

struts2概述與框架搭建

一開始學習struts2比較好奇的應該是為什麼會叫 2吧,查了一下,之前有大神寫了乙個struts1,但是是基於servlet的,我們知道servlet有他的限制,而另乙個小組開發了乙個叫webwork的框架,兩個人商量一下把對方的整合在一起,但畢竟struts的作者名聲大,所以沿用了struts的...

Struts2字尾 深入Struts2

一 將action字尾變成html字尾 xmlversion 1.0 encoding utf 8 doctype struts public apache software foundation dtd struts configuration 2.1 en struts include file...