zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    cf1058c 暴力
    cf1058b 点是否在一个矩形里
    cf1058E 思维 前缀处理 位运算
    Codeforces Round #622 (Div. 2)C(单调栈,DP)
    Codeforces Round #623 (Div. 1, based on VK Cup 2019-2020
    Atcoder Beginner Contest 156E(隔板法,组合数学)
    【PAT甲级】1117 Eddington Number (25分)
    【PAT甲级】1116 Come on! Let's C (20分)
    【PAT甲级】1115 Counting Nodes in a BST (30分)(二叉查找树)
    Codeforces Round #621 (Div. 1 + Div. 2)E(二分查找,枚举分界点,容斥原理)
  • 原文地址:https://www.cnblogs.com/Cratical/p/2677909.html
Copyright © 2011-2022 走看看