`
高级java工程师
  • 浏览: 410832 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2的表达式语言OGNL、JSTL、Groovy

阅读更多
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是Object Graph Navigation Language的缩写,与JSP,JSF相比,OGNL是一种功能非常强大的针对Java的表达式语言(EL),它可用来读取和更新Java对象的属性。



OGNL可以用在以下方面:
- 用做数据绑定语言用来绑定GUI元素(textfield, combobox等)到模型对象
- 用做数据源语言用来映射数据库表到表模型对象
- 用做数据绑定语言用来绑定web组件到数据模型(WebOGNL,Tapestry,WebWork等)
- 提供类似Jakarta Commons BeanUtils所提供的功能(读取Java对象的属性)


OGNL表达式语法:
Java标准类型:
bool类型:true,false
int类型:10, 0xABCD等
long类型:100L
float类型:1.0, 0.5F等
double类型:0.01D
char类型:'A', '\uFFFF'等
字符串类型:"Hello World!"
null

OGNL独自类型:
例:10.01B,相当于java.math.BigDecimal
例:100000H,相当于java.math.BigInteger

OGNL表达式中能使用的操作符号:
OGNL表达式中能使用的操作符基本跟Java里的操作符一样,除了能使用 +, -, *, /, ++, --, ==, !=, = 等操作符之外,还能使用 mod, in, not in等

变量的引用:
使用方法:#变量名
例:#this, #user.name

对静态方法或变量的访问:
@mypkg.MyClass@myVar
@mypkg.MyClass@myMethod()

读取变量值:
例:user.address.countryName

方法调用:
例:user.getName()

对象的创建:
new java.net.URL("http://localhost/")

List表达式例:
{"green", "red", "blue"}


Map表达式例:
#{"key1" : "value1", "key2" : "value2", "key3" : "value3"}
对map引用,例:map.key1

等等。

OGNL官方首页:
http://www.ognl.org/

OGNL官方文档 (2.6.9)
OGNL Language Guide (2.6.9)

<@s.radio name="user.sex" value="%{user == null || user.sex == null  ? 'true' : user.sex}" list=r'#{"true":"男", "false":"女"}' required="true" />
分享到:
评论

相关推荐

    Struts 2中的OGNL教程

    ### Struts 2 中的 OGNL 教程 ...综上所述,OGNL 是 Struts 2 中非常强大且灵活的表达式语言,能够显著提升代码的可读性和可维护性。熟练掌握 OGNL 的使用方法对于开发高质量的 Web 应用程序至关重要。

    struts2经典教程

    Struts 2支持以下几种表达式语言: OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言; JSTL(JSP Standard Tag Library),JSP 2.0集成的标准的表达式语言; Groovy,基于...

    Struts2_OGNL 笔记

    Struts2除了支持OGNL之外,还支持JSTL、Groovy和Velocity等表达式语言。每种语言都有其特点和适用场景,但OGNL因其灵活性和功能强大成为Struts2的首选。 通过理解和熟练运用这些知识点,开发者可以更好地在Struts2...

    OGNL表达式

    在Struts2框架中,默认使用的表达式语言即为OGNL,这是因为相比于其他表达式语言(如JSTL、Groovy和Velocity等),OGNL具有以下显著优点: 1. **支持对象方法调用**:OGNL允许直接调用对象的方法,而无需显式创建...

    Struts 2.1.8_学习源码

    Struts2默认支持OGNL、JSTL、Groovy和Velcity表达式 Struts2_04ActionResultType : Struts2关于Action跳转类型的应用 对各种不同的跳转类型使用的实例 Struts2_05Interceptor : Struts2拦截器的使用 Struts2_06...

    教案第五章struts2的标签库.pdf

    Struts 2 还支持多种表达式语言,包括 OGNL、JSTL、Groovy 和 Velocity。其中 OGNL 是 Struts 2 的默认表达式语言,提供了许多实用的功能,例如支持对象方法调用、类静态的方法调用和值访问、赋值操作和表达式串联等...

    重要知识ognl+标签.pdf

    6. **其他表达式语言**:除了OGNL,Struts2还支持JSTL、Groovy和Velocity等表达式语言,它们各自有其特点和适用场景。 7. **示例**:在实际开发中,比如你有一个名为`books`的列表,你可以通过OGNL表达式筛选出价格...

    第五章struts2的标签库.pdf

    为了适应不同的表达式语言需求,Struts 2标签库支持了多种表达式语言,包括OGNL、JSTL、Groovy和Velocity等。其中,OGNL作为默认的表达式语言,它的默认地位体现了其在功能上的优势。OGNL表达式使用特定的符号来实现...

    Struts2常用标签

    Struts2的一个显著特点是支持多种表达语言,包括OGNL(Object-Graph Navigation Language)、JSTL(JavaServer Pages Standard Tag Library)、Groovy以及Velocity,这比Struts1.x仅支持EL(Expression Language)...

    struts2标签介绍

    - **表达式语言**:Struts1.x不支持嵌入式语言(EL),而Struts2.0则支持多种表达式语言,包括OGNL(Object-Graph Navigation Language)、JSTL、Groovy以及Velocity等。 #### 三、非UI标签详解 ##### 3.1 if、...

    Struts2知识点小结-非常实用

    视图部分则通过丰富的标签库呈现用户界面,这些标签使用OGNL(Object Graph Navigation Language)表达式作为基础,不仅支持OGNL,还兼容JSTL, Groovy和Velocity等表达式。Struts2的标签库定义在URI为 `/struts-tags...

    struts 2.0系列2常用的Struts 2.0的标签(Tag)介绍

    在Struts 2.0中,所有的标签都位于"struts-tags"命名空间下,且支持多种表达语言,如OGNL、JSTL、Groovy和Velocity,相比Struts 1.x的EL,提供了更为丰富的表达能力。 接下来,我们详细讨论一些常用的Struts 2.0...

    java开发常用jar包

    OGNL表达式所需要的包,支持EL htmlparser.jar 强大的html解析器 jcommon-1.0.15.jar 使用java生成图表的工具 freemarker-2.3.8.jar 模板相关操作需要包 struts2-core-2.0.14.jar struts2核心包 struts2-...

Global site tag (gtag.js) - Google Analytics