博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
29.OGNL与ValueStack(VS)-总结OGNL[重点]
阅读量:6402 次
发布时间:2019-06-23

本文共 866 字,大约阅读时间需要 2 分钟。

转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html

OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目。Struts2使用OGNL作为默认的表达式语言。

相对于EL表达式,它提供了平时我们需要的一些功能,如:支持对象方法调用,支持各类静态方法调用和值访问,支持操作集合对象。OGNL有一个上下文的概念,这个上下文件实质就是一个Map结构,它实现了java.utils.Map接口,在struts2中上下文的实现为ActionContext,下面是上下文的结构示意图:

 

当struts2接受一个请求时,会迅速创建ActionContext,ValueStack,action。然后把action存放进ValueStack,所以action的实例变量可以接受OGNL访问。

访问上下文中的对象需要使用#号标注命名空间,如#application、#session。另外OGNL会设定一个根对象,在struts2中根对象就是ValueStack值栈对象,如果要访问根对象中对象的属性,则可以省略#命名空间,直接访问该对象的属性即可。在struts2中,根对象的实现类为OgnlValueStack,该对象不是我们想象的只存放单个值,而是存放一组对象,在OgnlValueStack类里有一个List类型的变量,就是使用这个List变量来存放一组对象。在root变量(List类型)中处于第一位的对象叫栈顶对象,通常我们在Ognl表达式里直接写上属性的名称即可访问root变量里对象的属性,搜索顺序是从栈顶对象开始寻找,如果栈顶对象不存在该属性,就会从第二个对象寻找,如果没有找到就从第三个对象寻找,依次往下寻找。 注意:struts2中 ,OGNL表达式需要配合struts的标签才可以使用。

转载于:https://www.cnblogs.com/sharpest/p/5582901.html

你可能感兴趣的文章
基于Deep Learning 的视频识别方法概览
查看>>
PostgreSQL 如何实现upsert与新旧数据自动分离
查看>>
MySql Blob图片类型存储Bug解决:索引超出了数组界限错误
查看>>
enum枚举类型
查看>>
Android API 中文 (52) —— ZoomButtonsController.OnZoomListener
查看>>
Go语言的可变(不定长)参数函数
查看>>
!+"\v1" 用来“判断浏览器类型”还是用来“IE判断版本”的问题!
查看>>
Linux IO模型漫谈(2)
查看>>
[网摘学习]在Ubuntu上安装和配置OpenStack Nova之二
查看>>
想挖大数据价值,你得先“挖人”!
查看>>
core dump磁盘报警问题排查过程
查看>>
Nginx报 No input file specified. 的问题解决之路
查看>>
Design Pattern: Not Just Mixin Pattern
查看>>
Ubuntu14.04下安装Hadoop2.5.1 (单机模式)
查看>>
kettle入门与实战(视频教程)
查看>>
简单JNI使用demo
查看>>
框架开发管理流程图
查看>>
Java 容器 & 泛型:四、Colletions.sort 和 Arrays.sort 的算法
查看>>
GDB的两个技巧
查看>>
PHP MysqlND 简介
查看>>