struts2中 與 與 區別

2021-07-30 22:26:50 字數 1841 閱讀 4696

在struts中符號的使用比較靈活,尤其是「%」、「#」、「$」這三個符號的使用。由於$廣泛應用於el中,這裡重點寫%和#符號的用法。   

1、「#」符號有三種用途:   

(1)、訪問非根物件(struts中值棧為根物件),ognl在不新增任何符號的情況下,預設訪問的是valuestack中的值,也就是說是action中的屬性和方法;如ognl上下文和action上下文,#相當於actioncontext.getcontext();下表有幾個actioncontext中有用的屬性:   

名稱             作用                                       例子      

parameters   包含當前http請求引數的map                      #parameters.id[0]作用相當於request.getparameter("id")    

request      包含當前httpservletrequest的屬性(attribute)的map   #request.username相當於request.getattribute("username")    

session      包含當前httpsession的屬性(attribute)的map    #session.username相當於session.getattribute("username")     

(2)、用於過濾和投影(projecting)集合,如: books.     

books.   

(3)、構造map,如: #     

#這種方式常用在給radio或select、checkbox等標籤賦值上。如果要在頁面中取乙個map的值可以這樣寫:    

2、「%」符號的用途是在標籤的屬性值被理解為字串型別時,告訴執行環境%{}裡的是ognl表示式。

讓被理解為字串的表示式,被真正當成ognl來執行。

舉例:    

上面的**第2行會在頁面上輸出「value1」,而

第3行則會輸出"#mymap['key1']"這麼乙個字串。原因:在property標籤中,value之後的字串會自動被解析為ognl表示式,但是url標籤在被struts解析的時候預設當做字串對待,所以這裡輸出的是原字串

。如果將第3行改寫成這樣:   

則輸出為「value1」。   

由此說明struts2裡不同的標籤對ognl的表示式的理解是不一樣的。當有些標籤中的字串物件不被理解成表示式的時候就可以通過%{}來顯式指定它的屬性為ognl表達。

3、「$」有兩種用途   

(1)、在國際化資源檔案中,引用ognl表示式。   

(2)、在struts 2配置檔案中,引用ognl表示式:    

listuser.action?msg=$

(注意:這裡的${}不是el表示式,而是ognl表示式,他只是在不同的地方定義的解析字元不一樣而已)

listuser.action?msg=$

el表示式:

1.基本格式:${}

$3.基本運算:.和  .用於取屬性用於取array,list,map,set

4.{}裡允許的運算:算術運算,關係運算,邏輯運算,empty/not empty空判斷$$

$$判斷user物件是否為空

5.el的11個隱含物件

pagecontext,param和paramvalues,header和headervalues,cookie,initparam和4種取值範圍物件

*pagecontext可獲取jsp的request,response,out,session,config,servletcontext等物件

$header

$*cookie

$

struts2中 與 與 區別

1 符號有三種用途 1 訪問struts中值棧物件 ognl在不新增任何符號的情況下,預設訪問的是valuestack中的值,也就是說是action中的屬性和方法 如ognl上下文和action上下文,相當於actioncontext.getcontext 舉例 上面的 第2行會在頁面上輸出 val...

struts2中 與 與 區別

在struts中符號的使用比較靈活,尤其是 這三個符號的使用。由於 廣泛應用於el中,這裡重點寫 和 符號的用法。1 符號有三種用途 1 訪問非根物件 struts中值棧為根物件 ognl在不新增任何符號的情況下,預設訪問的是valuestack中的值,也就是說是action中的屬性和方法 如ogn...

struts2中 , , 的區別

首先我們需要找到值棧是什麼?值棧的結構分為什麼?struts2裡面本身提供的一種儲存機制,類似於域物件,簡單的來說就是,值棧,可以進行存值與取值 值棧的結構分為兩種,一種是root,這種的執行結構是乙個list集合 另一種是context,這一種的執行結果是map集合 當有的時候我們需要從conte...