Ognl值棧物件及struts標籤

2021-09-02 16:59:00 字數 2091 閱讀 5652

使用者每次訪問struts的action,都會建立乙個action物件、值棧物件、actioncontext物件;然後把action物件放入值棧中; 最後再把值棧物件放入request中,傳入jsp頁面(key: struts.valuestack)。

值棧的記憶體結構分為:

map棧:

request

session

list棧:

action及全域性物件

我們只需要通過actioncontext物件就可以訪問struts的其他的關鍵物件。

public class ognldemo2 extends actionsupport 

public void setuser(user user)

@override

public string execute() throws exception

}

struts會將全域性屬性及action物件放入根元素中即list棧,如圖:

以下方法可以操作該棧物件

vs.push(new user(101, "asen"));//可以list棧頂新增物件

vs.pop();//可以移除list棧頂物件

vs.set("new_user", new user(222, "ronaldo"));//也可以往list棧新增元素

可以向map棧(ognlcontext)新增物件

從這個table裡可以找到:

user1=com.asen.test4.entity.user@7dbeb971

session=

綜上所述:

actioncontext.getcontext().put(string key, object value)放入map棧(ognlcontext)

actioincontext.getcontext().getvaluestack().push(object value)放入list棧

在jsp頁面我們可以通過struts標籤獲取值棧裡的物件

對於map棧的資料,加#號訪問

ognl表示式對於list棧的資料直接根據key值提取value值就可以了

還可以用

以上是前端頁面獲取到資料,接下來是前端頁面提交資料到伺服器,伺服器接收資料

假如有乙個用來處理客戶的 customeraction 類, 該動作類實現了 modeldriven 介面,當使用者觸發customeraction 動作時, modeldriven ***將呼叫相關customeraction 物件的 getmodel() 方法, 並把返回的模型(customer例項)壓入到 valuestack 棧. 接下來 parameters ***將把表單字段對映到 valuestack 棧的棧頂物件的各個屬性中. 因為此時 valuestack 棧的棧頂元素是剛被壓入的模型(product)物件, 所以該模型將被填充. 如果某個欄位在模型裡沒有匹配的屬性, param ***將嘗試 valuestack 棧中的下乙個物件.

department department = new department();

/*** 把model的值賦值給了department

*/beanutils.copyproperties(this.getmodel(), department);

struts2 OGNL 值的訪問

前言我覺得首先需要事先了解一下ognl,在開始struts2值棧 struts2值棧 onglvaluestack onglvaluestack 有兩部分,一部分是繼承arraylist實現的乙個棧結構,乙個就是在 contextmap詳解 中介紹過的contextmap。第一部分 valuesta...

struts2 0中ognl棧的解析

ongl詳解 valuestack是struts2的乙個介面,字面意義為值棧,ognlvaluestack是 valuestack的實現類,客 戶端發起乙個請求,struts2架構會建立乙個action例項同時建立乙個ognlvaluestack值棧例項,ognlvaluestack貫穿整個acti...

struts2中根物件以及ognl

struts2中的ognl表示式語言是對xwork的ognl的封裝。我們要理解一下幾點 1 struts2中將actioncontext作為ognl的上下文環境 actioncontext內部含有乙個map物件 2 struts2中的 ognl表示式語言的根物件是乙個valuestack value...