Struts2的OGNL表达式——1
2016-12-21 19:13
218 查看
OGNL:全称为Object-Graph Navigation Language,它是一个功能强大的表达式语言,用来获取和设置Java对象的属性,它旨在提供一个更高的更抽象的层次来对java对象图进行导航。
struts2默认的表达式语言OGNL,它比其他的表达式语言有几个很大的优势
支持对象方法调用,如:user.getUsername();
支持类静态的方法调用和值访问,表达式的格式为:@[类全名(包括包路径)]@[方法名|值名]
访问OGNL上下文(OGNL context) 和 ActionContext;
操作集合对象
----------------------------------------------------------------------------------------------
值栈:ValueStack对象相当于一个栈,它贯穿整个Action的生命周期,每个action类的对象的实例都会拥有一个ValueStack对象,当struts2接受到对action的请求后,并不是直接调用action的方法,而是先将action类的属性放到ValueStack对象的顶层节点,值栈位于内存中,它也是和parameters,request,session,appliccation,attr放在一起。值栈属于OGNL
Context里面的根对象,也就是说它位于整个内存中最重要的地方,所以叫根对象。根对象与另外5个对象是有区别的,根对象可以省写#号。值栈的生命周期与request请求相关,每次请求产生一个值栈,默认所有的Action会被自动放到值栈中。
假设一个action1通过服务器跳转到另一个Action2,那么这俩个action用的是同一个值栈,因为转发只有一个请求,一个只产生一个值栈。此时的内存情况:首先接受到Action1请求后,产生一个值栈,在栈顶存放的是action1的对象以及它所有的属性,然后经过服务器跳转到Action2,这时会把Action2对象压入值栈的栈顶位置,此时action1的相关内容已经位于栈底。
取值的过程:
栈的特征是先进后出,于是首先到栈顶对象中查找是否存在这个属性,如果栈顶的action2中不存在这个属性的话,它就会继续向下寻找至栈底对象,一直查找是否存在这个属性,如果找到该属性,jsp页面通过
<s:property value="username" />输出属性值。如果俩个action中都有同名的属性值那获取为与栈顶对象的属性值。
struts2默认的表达式语言OGNL,它比其他的表达式语言有几个很大的优势
支持对象方法调用,如:user.getUsername();
支持类静态的方法调用和值访问,表达式的格式为:@[类全名(包括包路径)]@[方法名|值名]
访问OGNL上下文(OGNL context) 和 ActionContext;
操作集合对象
----------------------------------------------------------------------------------------------
值栈:ValueStack对象相当于一个栈,它贯穿整个Action的生命周期,每个action类的对象的实例都会拥有一个ValueStack对象,当struts2接受到对action的请求后,并不是直接调用action的方法,而是先将action类的属性放到ValueStack对象的顶层节点,值栈位于内存中,它也是和parameters,request,session,appliccation,attr放在一起。值栈属于OGNL
Context里面的根对象,也就是说它位于整个内存中最重要的地方,所以叫根对象。根对象与另外5个对象是有区别的,根对象可以省写#号。值栈的生命周期与request请求相关,每次请求产生一个值栈,默认所有的Action会被自动放到值栈中。
假设一个action1通过服务器跳转到另一个Action2,那么这俩个action用的是同一个值栈,因为转发只有一个请求,一个只产生一个值栈。此时的内存情况:首先接受到Action1请求后,产生一个值栈,在栈顶存放的是action1的对象以及它所有的属性,然后经过服务器跳转到Action2,这时会把Action2对象压入值栈的栈顶位置,此时action1的相关内容已经位于栈底。
取值的过程:
栈的特征是先进后出,于是首先到栈顶对象中查找是否存在这个属性,如果栈顶的action2中不存在这个属性的话,它就会继续向下寻找至栈底对象,一直查找是否存在这个属性,如果找到该属性,jsp页面通过
<s:property value="username" />输出属性值。如果俩个action中都有同名的属性值那获取为与栈顶对象的属性值。
相关文章推荐
- Struts2深入学习----OGNL表达式原理
- OGNL表达式struts2标签“%,#,$”
- Struts2标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系与各自使用
- Struts2 OGNL表达式语言
- Struts2中的技术分析之OGNL表达式概述(了解)
- Struts2使用OGNL表达式封装输入数据(直接封装Map类型)
- struts2 OGNL表达式
- Struts2总结---OGNL表达式的基本语法和用法 (8)
- Struts2 使用OGNL表达式访问ENUM对象
- OGNL表达式struts2标签“%,#,$”
- Struts2学习记录-Value Stack(值栈)和OGNL表达式
- Struts2-03-OGNL表达式
- OGNL表达式struts2标签“%,#,$”
- Struts中的OGNL表达式语言1/Struts标签与OGNL表达式语言实例演练2/Struts2常用标签总结3
- [转载]OGNL表达式struts2标签“%,#,$”
- JAVAEE学习——struts2_03:OGNL表达式、OGNL与Struts2的结合和练习:客户列表
- Struts2系统学习(16)OGNL表达式及基本原理分析
- struts2 OGNL 表达式
- JavaWeb--Struts2——OGNL表达式
- struts2中使用ognl表达式时各种符号的使用规则$,#,%