ognl总结

2024-02-16 00:58
文章标签 总结 ognl

本文主要是介绍ognl总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

	// ***************** root对象的概念 ******************* //public void testOgnl_01() throws Exception{User user = new User();user.setUsername("张三");//相当于调用user.getUsername()方法String value = (String)Ognl.getValue("username", user);System.out.println(value);}public void testOgnl_02() throws Exception{User user = new User();Person p = new Person();p.setName("张三");user.setPerson(p);//相当于调用user.getPerson().getName()方法String value = (String)Ognl.getValue("person.name", user);System.out.println(value);}public void testOgnl_03() throws Exception{User user = new User();Person p = new Person();p.setName("张三");user.setPerson(p);//可以使用#root来引用根对象,相当于调用user.getPerson().getName()方法String value = (String)Ognl.getValue("#root.person.name", user);System.out.println(value);}

 

 

// *********************** context的概念 **********************//public void testOgnl_04() throws Exception{Person p1 = new Person();Person p2 = new Person();p1.setName("张三");p2.setName("李四");Map context = new HashMap();context.put("p1", p1);context.put("p2", p2);String value = (String)Ognl.getValue("#p1.name + ',' + #p2.name", context, new Object());System.out.println(value);}public void testOgnl_05() throws Exception{Person p1 = new Person();Person p2 = new Person();p1.setName("张三");p2.setName("李四");Map context = new HashMap();context.put("p1", p1);context.put("p2", p2);User root = new User();root.setUsername("zhangsan");String value = (String)Ognl.getValue("#p1.name + ',' + #p2.name + ',' + username", context, root);System.out.println(value);}

 

 

 

	// ******************* OGNL赋值操作 ************************//public void testOgnl_06() throws Exception{User user = new User();//给root对象的属性赋值,相当于调用user.setUsername()Ognl.setValue("username", user, "zhangsan");System.out.println(user.getUsername());}public void testOgnl_07() throws Exception{User user = new User();Map context = new HashMap();context.put("u", user);//给context中的对象属性赋值,相当于调用user.setUsername()Ognl.setValue("#u.username",context, new Object(), "zhangsan");System.out.println(user.getUsername());}public void testOgnl_08() throws Exception{User user = new User();Map context = new HashMap();context.put("u", user);//给context中的对象属性赋值,相当于调用user.setUsername()//在表达式中使用=赋值操作符来赋值Ognl.getValue("#u.username = '张三'",context, new Object());System.out.println(user.getUsername());}public void testOgnl_09() throws Exception{User user = new User();Person p = new Person();Map context = new HashMap();context.put("u", user);context.put("p", p);//给context中的对象属性赋值,相当于调用user.setUsername()//在表达式中使用=赋值操作符来赋值Ognl.getValue("#u.username = '张三',#p.name = '李四'",context, new Object());System.out.println(user.getUsername()+","+p.getName());}

 

 

 

	//****************** 使用OGNL调用对象的方法 **********************//public void testOgnl_10() throws Exception{User user = new User();user.setUsername("张三");String value = (String)Ognl.getValue("getUsername()", user);System.out.println(value);}public void testOgnl_11() throws Exception{User user = new User();Ognl.getValue("setUsername('张三')", user);System.out.println(user.getUsername());}

 

 

 

	// ********************* OGNL中的this表达式 **********************//public void testOgnl_14() throws Exception{Object root = new Object();Map context = new HashMap();List values = new ArrayList();for(int i=0; i<11; i++){values.add(i);}context.put("values", values);Ognl.getValue("@System@out.println(#values.size.(#this > 10 ? \"大于10\" : '不大于10'))", context, root);}public void testOgnl_15() throws Exception{User user = new User();Ognl.getValue("setUsername('ZHANGSAN')", user);Ognl.getValue("@System@out.println(#this.username)", user);}public void testOgnl_16() throws Exception{User user = new User();Ognl.getValue("setUsername('ZHANGSAN')", user);Ognl.getValue("@System@out.println(username.(#this.toLowerCase()))", user);}

 

 

	// ******************* 如何把表达式的解释结果作为另外一个表达式,OGNL中括号的使用 **********************//public void testOgnl_17() throws Exception{Object root = new Object();Map context = new HashMap();User u = new User();u.setUsername("张三");context.put("u", u);context.put("fact", "username");/*** 1、首先把#fact表达式进行解释,得到一个值:username* 2、解释括号中的表达式#u,其结果是user对象* 3、把括号中表达式的结果作为root对象,解释在第一步中得到的结果(即把第一步的结果看成另外一个表达式) */String value = (String)Ognl.getValue("#fact(#u)", context, root);System.out.println(value);}public void testOgnl_18() throws Exception{Person person = new Person();Map context = new HashMap();User u = new User();u.setUsername("张三");context.put("u", u);/*** 相当于调用person这个根对象的fact方法,并把#u的解释结果作为参数传入此方法 */String value = (String)Ognl.getValue("fact(#u)", context, person);System.out.println(value); //输出是 "张三,"}public void testOgnl_19() throws Exception{Person person = new Person();Map context = new HashMap();User u = new User();u.setUsername("张三");context.put("u", u);/*** 1、先计算表达式fact,得到结果是:username* 2、解释括号中的表达式#u,其结果是user对象* 3、把括号中表达式的结果作为root对象,解释在第一步中得到的结果(即把第一步的结果看成另外一个表达式)*/String value = (String)Ognl.getValue("(fact)(#u)", context, person);System.out.println(value); //输出"张三"}

 

 

	// ********************* OGNL访问集合元素 **************************//public void testOgnl_20() throws Exception{Object root = new Object();Map context = new HashMap();//用OGNL创建List对象List listvalue = (List)Ognl.getValue("{123,'kdjfk','oooo'}", context, root);context.put("listvalue", listvalue);//用OGNL创建数组int[] intarray= (int[])Ognl.getValue("new int[]{23,45,67}", context, root);context.put("intarray", intarray);//用OGNL创建Map对象Map mapvalue = (Map)Ognl.getValue("#{'listvalue':#listvalue,'intarray':#intarray}", context, root);context.put("mapvalue", mapvalue);Ognl.getValue("@System@out.println(#listvalue[0])", context, root);Ognl.getValue("@System@out.println(#intarray[1])", context, root);Ognl.getValue("@System@out.println(#mapvalue['intarray'][2])", context, root);Ognl.getValue("@System@out.println(#mapvalue.intarray[0])", context, root);}

 

 

这篇关于ognl总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/713046

相关文章

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

MySQL基本查询示例总结

《MySQL基本查询示例总结》:本文主要介绍MySQL基本查询示例总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Create插入替换Retrieve(读取)select(确定列)where条件(确定行)null查询order by语句li

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自