1. OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写
* 所谓对象图,即以任意一个对象为根,通过OGNL可以访问与这个对象关联的其它对象
* 通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性 2. Struts2框架使用OGNL作为默认的表达式语言(OGNL可以在struts2框架中使用,也可以单独使用)表达式语言用于获取jsp页面数据
* OGNL是一种比EL强大很多倍的语言
* xwork提供 OGNL表达式
* ognl-3.0.5.jar
struts2已经将OGNL合并到它的里面。
3. OGNL 提供五大类功能
* 支持对象方法调用
* 支持类静态的方法调用和值访问
* 访问OGNL上下文(OGNL context)和ActionContext
* 支持赋值操作和表达式串联
* 操作集合对象
4. 测试的代码(在代码中使用OGNL表达式)
// 访问对象的方法
@Test
public void run1() throws OgnlException{
    //使用ongl必须先要获取ognl的上下文对象
OgnlContext context = new OgnlContext();
// 获取对象的方法
Object obj = Ognl.getValue("'helloworld'.length()", context, context.getRoot());//getRoot()为值栈
System.out.println(obj);
} // 获取OGNL上下文件的对象(向值栈中存储字符串)
@Test
public void run3() throws OgnlException{
OgnlContext context = new OgnlContext();
context.put("name", "美美");
// 获取对象的方法
    //要获取值,需要在表达式的name前加一个'#'。属性前面加一个#,就可以获取属性对应的值。
Object obj = Ognl.getValue("#name", context, context.getRoot());
System.out.println(obj);
} // 从root栈获取值(向值栈中存储对象
@Test
public void demo3() throws OgnlException{
OgnlContext context = new OgnlContext();
Customer c = new Customer();
c.setCust_name("haha");
    //向值栈中存储对象,就不能通过put方法了,使用setRoot()方法进行存储
context.setRoot(c);
    //要获取值,直接写属性名就ok
String name = (String) Ognl.getValue("cust_name", context, context.getRoot());
System.out.println(name);
}
 

最新文章

  1. Make Helix Curve in OpenCASCADE
  2. C++实现Ping
  3. bzoj4137 [FJOI2015]火星商店问题
  4. 【转】JDBC为什么要使用PreparedStatement而不是Statement
  5. 系统监控的一些工具w , vmstat
  6. 大脑提取每一个体素26领域的matlab代码
  7. C#实现MD5字符串加密
  8. DEV中gridview常用属性的设置
  9. LINUX 笔记-crontab命令
  10. C++中double类型的数字如何保留三位小数点详解
  11. IBM的websphere MQ的c#使用(一)
  12. Useful command for Docker
  13. ALS交替最小二乘法总结
  14. JAVA中接口与抛出异常的相关知识
  15. [web前端] css3 transition属性实现3d动画效果
  16. wysiwyg 富文本编辑器(附带图片上传功能)
  17. [Database] Oracle 中的where 可以后接group by
  18. BZOJ1266 [AHOI2006]上学路线route Floyd 最小割 SAP
  19. English trip V1 - B 18. Workplaces 工作地方 Teacher:Russell Key: do / does
  20. (20)The most mysterious star in the universe

热门文章

  1. 基于标准库实现string和wstring的转换
  2. MySQL 序列 AUTO_INCREMENT
  3. Hibernate 和 MyBatis 的对比
  4. tomcat原理分析与简单实现
  5. PHP Token(令牌)设计 避免重复提交
  6. Appium清空EditText
  7. linux 下常用部分命令
  8. 【转】Maven中-DskipTests和-Dmaven.test.skip=true的区别
  9. 编写一个基于Soap DataModule的三层数据库应用
  10. indy字符编码