jsp運算式語言

來源:互聯網
上載者:User

標籤:輸出   字元   標籤   客戶   bsp   使用   實現   多個   構造   

jsp運算式<%= %> :將Java變數或運算式的計算結果輸出到用戶端 <%= date %>類似於<%  out.print(date)  %>

jsp指令碼片段<%  %>:嵌套在<%%>中的一條或多條Java程式碼

  <% if (age>=18){ %>

     成人  

  <% }else{  %>

    未成年

   <%  }  %>

OGNL對象圖導航語言,是一種運算式語言,可以任意存取對象的屬性或者調用對象的方法,能夠遍曆整個對象的結構圖,實現對象屬性類型的轉換

1.OGNL上下文實際上就是一個map對象,存放多個Javabean對象,它有一個上下文根對象,內容相關的根對象可以直接使用名後者直接調用它的屬性名稱來訪問它的屬性值,否則前面要加首碼“#key”

2.struts2的標籤庫都是使用ONGL運算式來訪問ActionContext重點資料對象:<s: property value=""/>

3.struts2將ActionContext設定為OGNL上下文,並將值棧作為OGNL 根對象放置到ActionContext中

4.值棧:可以在值棧中放入刪除查詢對象,訪問值棧中的對象不用“#”,Struts2將當前ActionContext執行個體放置在棧頂,所以在OGNL中引用Action中的屬性也可以省略“#”;  

5.調用ActionContext的put(key,value)放入的資料,需要使用#訪問;

三個符號:# % $

1.#符號

訪問非根對象屬性 :

  #session.msg運算式相當於ActionContext.getContext().getSession().getAttribute("msg")

  #parameters.id[0]作用相當於request.getParameter("id")

  #request.userName相當於request.getAttribute("userName")

  #session.userName相當於session.getAttribute("userName")

  #application.userName相當於application.getAttribute("userName")

用於過濾和投影集合:persons.{?#this.age>25},persons.{?#this.name==‘pla1‘}.{age}[0]

用於構造map:#{‘foo1‘:‘bar1‘, ‘foo2‘:‘bar2‘}

2.%符號

在標誌的屬性為字串類型時,計算OGNL運算式的值,這個值類似於js中的eval;

3.$符號

在國際化資源檔中,引用OGNL運算式

在Struts2架構的設定檔中引用OGNL運算式

總結OGNL的使用方法

訪問屬性;存取方法;

訪問靜態屬性和方法:運算式的格式為@[類全名(包括包路徑)]@[方法名 |  值名]

  @[email protected](‘foo %s‘, ‘bar‘)或@[email protected]_NAME

訪問構造方法:<s:property value="new struts.vo.Student(‘李曉紅‘ , ‘美女‘ , 3 , 25).username"/>

訪問數組(set由於沒有順序,不能使用下標擷取資料);list;map

訪問集合、投影 選擇(? ^ $)

  利用選擇擷取List中成績及格的第一個對象的username: <s:property value="stus.{?#this.grade>=60}.{username}[0]"/><br>

  利用選擇擷取List中成績及格的對象的username: <s:property value="stus.{?#this.grade>=60}.{username}"/><br>

  利用選擇擷取List中成績及格的第一個對象的username:<s:property value="stus.{^#this.grade>=60}.{username}"/><br>

  利用選擇擷取List中成績及格的最後一個對象的username: <s:property value="stus.{$#this.grade>=60}.{username}"/><br>

集合的偽屬性:引用集合的一些特殊屬性,但這些屬性並不是Javabean模式,如size(),length(),這些即偽屬性

  collection:size,isEmpty;  list:iterator; map:keys,values; set:iterator; iterator:next,hasNext; 

使用Lambda :[...]運算式計算階乘:<s:property value="#f = :[#this==1?1:#this*#f(#this-1)] , #f(4)"/><br>

 

jsp運算式語言

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.