struts2 值棧的理解

2022-03-17 15:29:45 字數 901 閱讀 3193

之前工作中當遇到jsp在struts2取值的時候,對於# % 什麼的使用一直處於不太明白的狀態(雖然之前學習struts2的時候有學到過)。

今天再次遇到,整理一下。

struts2上下文如上圖所示。其中值棧裡的內容我們經常用到的主要就是當前action的屬性值。可以用s:debug標籤看到。

對於在jsp裡取值棧裡的值:<s:propertyvalue="artist.bio"/>

值棧裡的值是可以「公升級」的,使用的是set標籤,其中可以用scope指明要公升級到的範圍:<s:setname="artistname"value="artist.name"scope="session"/>

這時候的取值:<s:propertyvalue="#session['artistname']"/>

可以看到,在非值棧(context)取值會加上#,這個是ognl語法。

特別要提到struts2的iterator標籤:

var定義的變數,不是在值棧裡的,我猜測是在attr裡面的(不確定,求大神指點。。。)。所以它的取值也需要加上#:

Struts2 中的值棧的理解

值棧 簡單的說,就是存放action的堆疊,當我們提交乙個請求到伺服器端 action時,就有個堆疊,如果action在伺服器端進行跳轉,所有action共用乙個堆疊,當需要儲存action中的資料時,首先從棧頂開始 搜尋,若找到相同的屬性名 與要獲得的資料的屬性名相同 時,即將對應的值取出,但這種...

Struts2 中的值棧的理解

通過對struts2的一段時間的接觸,將自己對ognl的核心值棧說說,值棧 簡單的說,就是存放action的堆疊,當我們提交乙個請求道伺服器端 action時,就有個堆疊,如果action在伺服器端進行跳轉,所有action共用乙個堆疊,當需要儲存在action中的資料時,首先從棧頂開始 搜尋,若找...

struts2中對值棧的理解

struts2的interceptor一層一層,把action包裹在最裡面。這樣的結構,大概有以下一些特點 1.整個結構就如同乙個堆疊,除了action以外,堆疊中的其他元素是interceptor 2.action位於堆疊的底部。由於堆疊 先進後出 的特性,如果我們試圖把action拿出來執行,我...