Struts2的 和 的區別

2021-08-28 06:14:23 字數 1173 閱讀 2189

#用來取根目錄下的值,例如 session,request等等,取值的時候#session.key.屬性名 ,這樣會取到想要的物件的屬性值。

#代表當前的意思可以取出堆疊上下文的存放物件,不在struts堆疊裡,沒有#表示從struts堆疊裡取

如果從action中取屬性值,則test中的屬性值前面的'#'不需要

#通常強調從上下文取

訪問ognl上下文和action上下文,#相當於actioncontext.getcontext();

另外ognl會設定乙個根物件(root物件),在struts2中根物件就是valuestack(值棧)。如果要訪問根物件(即valuestack)中物件的屬性,則可以省略#命名空間,直接訪問該物件的屬性即可。

在struts2中,根物件valuestack的實現類為ognlvaluestack,該物件不是我們想像的只存放單個值,而是存放一組物件。在ognlvaluestack類裡有乙個list型別的root變數,就是使用他存放一組物件

,ognl表示式需要配合struts標籤才可以使用。如:

注意:在action中設定了該屬性的setter/getter方法時,該屬性才會取到,否則它不會被***處理,value引數的型別是object,可以理解為這個預設是會解析成ognl表示式的。如果需要輸入乙個字串注意,在value裡面的ddd字串外面加了單引號,這樣不會將ddd解析成ognl表示式了。

%{}類似于強轉為值棧的資料型別

並且%用於ognl標籤巢狀時候用的,比如想把乙個物件的值賦值給另外乙個物件:

用%{}可以取出存在值堆疊中的action物件,

這是jsp2.1最新規範中的語法,是struts2為其解決相容性問題而寫成%的

%{}強調的是從你設定的root點取

%{}用於計算表示式

如%結果將輸出30

如%結果將輸出"ab"

在域物件中使用%

比如%將獲得user物件的 username屬性值    

%仍然用於計算表示式,只不過操作元可以是變數

如先定義乙個變數

則%將輸出25,也可以省略"#",寫為%

若將age加10,可這麼寫:

%,將輸出30.不能省略"#"。也就說變數用於計算時不能省略"#"

SpringMvc和Struts2的區別

1 springmvc基於方法開發的,struts2基於類開發的。springmvc將url和controller方法對映。對映成功後springmvc生成乙個handler物件,物件中只包括了乙個method。方法執行結束,引數資料銷毀。springmvc的controller開發類似servic...

springmvc和struts2的區別

springmvc 和 struts的區別 1 springmvc是基於方法開發,而struts是基於類開發 springmvc對映的時候將url和controller方法進行對映。對映成功之後,springmvc會生成handler物件。handler物件中只包括了乙個method。因為是方法的形...

springmvc和struts2的區別

springmvc與struts2區別 1 springmvc的入口是乙個servlet即前端控制器,而strust2入口是乙個filter過濾器。2 springmvc是基於方法開發 乙個url對應乙個方法 請求引數傳遞到方法的形參,可以設計為單例或多例 建議單例 struts2是基於類開發,傳遞...