Struts2學習筆記(OGNL表達式)


Struts 2支持以下幾種表達式語言:

  1. OGNL(Object-Graph Navigation Language),可以方便地操作對象屬性的開源表達式語言;
  2. JSTL(JSP Standard Tag Library),JSP 2.0集成的標准的表達式語言;
  3. Groovy,基於Java平台的動態語言,它具有時下比較流行的動態語言(如Python、Ruby和Smarttalk等)的一些起特性;
  4. Velocity,嚴格來說不是表達式語言,它是一種基於Java的模板匹配引擎,具說其性能要比JSP好。

Struts 2默認的表達式語言是OGNL,原因是它相對其它表達式語言具有下面幾大優勢:

  1. 支持對象方法調用,如xxx.doSomeSpecial();
  2. 支持類靜態的方法調用和值訪問,表達式的格式為@[類全名(包括包路徑)]@[方法名 |  值名],例如:@java.lang.String@format('foo %s', 'bar')或@tutorial.MyConstant@APP_NAME;
  3. 支持賦值操作和表達式串聯,如price=100, discount=0.8, calculatePrice(),這個表達式會返回80;
  4. 訪問OGNL上下文(OGNL context)和ActionContext;
  5. 操作集合對象

OGNL是通常要結合Struts 2的標志一起使用,如<s:property value="xx" />等。大家經常遇到的問題是#、%和$這三個符號的使用。

  1. 訪問OGNL上下文和Action上下文,#相當於ActionContext.getContext();下表有幾個ActionContext中有用的屬性: image
  2. 用於過濾和投影(projecting)集合,如books.{?#this.price<100}。
  3. 構造Map,如#{'foo1':'bar1', 'foo2':'bar2'}。

個人覺得OGNL真的很簡單,即使有的表達方式忘了也沒關系,一查就搞定了,尚學堂的教學中有個例子不錯,基本上常用的都包括了。

下面是OGNL表達式的使用例子。

OGNL表達式示例代碼

下面是對應的java,都是最簡單的class

OgnlAction.java

OgnlAction.java

Dog.java

Dog.java

 

Cat.java

Cat.java

User.java

User.java

S.java

User.java


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM