b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

ognl表达式理解_ognl表达式_ognl表达式值栈

电脑杂谈  发布时间:2017-02-12 00:03:34  来源:网络整理

OGNL,全称为Object-Graph Navigation Language,它是一个功能强大的表达式语言,用来获取和设置Java对象的属性,可以存取对象的任意属性,调用对象的方法,遍历整个对象的,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。

XWork对OGNL的实现:

OGNL表达式的基本单位是"导航链",一般导航链由如下几个部分组成:

属性名称(property)

方法调用(method invoke)

数组元素

所有的OGNL表达式都基于当前对象的上下文来完成求值运算,链的前面部分的结果将作为后面求值的上下文。例如:names[0].length()。ognl表达式

例:第一个OGNL程序

public class OgnlTest {
    public static String sayHello(String name) {
        return "Hello," + name;
    }
    public static void main(String[] args) throws OgnlException {
        Foo foo = new Foo();
        // 1、访问基本类型
        System.out.println("1、访问基本类型");
        System.out.println(Ognl.getValue("name", foo));
        System.out.println(Ognl.getValue("age", foo));
        Ognl.setValue("age", foo, 20);
        System.out.println(Ognl.getValue("age", foo));
        // 2、访问数组、集合
        System.out.println("2、访问数组、集合");
        System.out.println(Ognl.getValue("langs[1]", foo));
        System.out.println(Ognl.getValue("list[1]", foo));
        // 3、访问Map
        System.out.println("3、访问Map");
        System.out.println(Ognl.getValue("map.age", foo));
        System.out.println(Ognl.getValue("map['name']", foo));
        // 4、调用方法
        System.out.println("4、调用方法");
        System.out.println(Ognl.getValue("name.toUpperCase()", foo));
        // 5、调静态方法
        System.out.println("5、调静态方法");
        System.out.println(Ognl.getValue("@com.hu.otnl.OgnlTest@sayHello(name)", foo));
        // 6、访问复杂的对象
        Dept dept = new Dept("JiaoYanBu");
        Emp e1 = new Emp("ZhangSan", 5500.0, dept);
        Emp e2 = new Emp("LiSi", 6500.0, dept);
        Emp e3 = new Emp("dafdang", 15000.0, dept);
        dept.addEmp(e1);
        dept.addEmp(e2);
        dept.addEmp(e3);
        System.out.println("6、访问复杂的对象");
        System.out.println(Ognl.getValue("dept.deptName", e3));
        System.out.println(Ognl.getValue("emps[2].empName", dept));
        System.out.println(Ognl.getValue("emps[2].salary+emps[1].salary+emps[0].salary", dept));
        // 7、基本运算
        System.out.println("7、基本运算");
        System.out.println(Ognl.getValue("age+20", foo));
        System.out.println(Ognl.getValue("'hello, ' + name", foo));
        // 8、创建List对象
        System.out.println("8、创建List对象");
        List obj = (List) Ognl.getValue("{'a','b','c'}", null);
        System.out.println(obj.getClass().getName());
        System.out.println(obj.get(0));
        // 9、创建Map对象
        System.out.println("9、创建Map");
        Object obj1 = Ognl.getValue("#{'aaa':'AAA','bbb':'BBB'}", null);
        System.out.println(obj1.getClass().getName());
        System.out.println(obj1);
        // 10、从不同的范围里取值
        System.out.println("10、从不同的范围里取值");
        Map<String, String> map = new HashMap<String, String>();
        map.put("name", "Cafhhfg");
        System.out.println(Ognl.getValue("#name", map, foo));
    }
}


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-31886-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 付金霞
      付金霞

      不然不会说出解决男女失衡解决办法是公用妻子

    • 张汁
      张汁

      一点养老钱也要放的踏实

    • 卫康侯
      卫康侯

      帮做不断提高产品质量

    热点图片
    拼命载入中...