OGNL表达式存取值
来源:互联网 发布:中国云计算领军人物 编辑:程序博客网 时间:2024/05/17 20:33
1.OGNL表达式:OGNL的全称是对象图导航语言(Object-Graph Navigation Language),它是一种功能强大的开源表达式语言,使用这种表达式语言,可以通过某种表达式语法,
存取Java对象的任意属性,调用Java对象的方法,同时能够自动实现必要的类型转换。如果把表达式看作是一个带有语义的字符串,那么OGNL无疑成为了这个语义字符串与Java对象之间沟通的桥梁。
2.借助s:property标签输出内容到浏览器
a)导入标签库:
<%@ taglib uri="/struts-tags" prefix="s" %>
<s:property value="OGNL表达式" />
b)把一个OGNL表达式看成是字符串的方式是:
<s:property value="OGNL表达式" /> 或者<S:property value="'OGNL表达式'" />
c)OGNL表达式创建集合:
<s:radio name="gender" list="{'男','女'}" label="性别"/>
d)OGNL表达式创建map集合:
<s:radio name="gender" list="#{'male':'男','female':'女'}" label="性别"/>
3.ContextMap:它是OGNL上下文对象,是struts2中封装数据最大的对象.我们一次请求中所有用到的信息都可以在里面找到,它
是一个Map结构的对象,其中key是字符串,value是一个Object,封装的数据如下:
Map的key(类型是String)Map的Value (类型是Object) 说明信息
application Java.util.Map<String,Object> 封装的应用域中的所有数据
session Java.util.Map<String,Object> 封装的会话域中的所有数据
request Java.util.Map<String,Object> 封装的请求域中的所有数据
valueStack(特殊)com.opensymphony.xwork2.ognl.OgnlValueStack 它是List结构
parametersJava.util.Map<String,String[]> 封装的是请求参数
attr Java.util.Map<String,Object> 封装的是四大域的组合数据,从最小的域开始搜索
action com.opensymphony.xwork2.ActionSupport 当前执行的动作类对象
4.ActionContext:它是一个工具类,是struts2框架提供给我们的,可以让我们调用其中的方法,快速的操作ContextMap。用它操作OGNL上下文对象,比直接操作ContextMap要方便很多。
ActionContext就相当于对ContextMap进行了一次再封装。由于ActionContext是操作的ContextMap,而ContextMap中封了我们一次请求的所有数据,所以它的创建应该是每次请求访问Action时,
即核心控制器(StrutsPrepareAndExecuteFilter)的doFilter方法执行时,每次创建ActionContext时,把对象绑定到当前线程上。想了解更多可以去查看一下源码.
5.使用OGNL表达式获取Map中的数据:
1、使用OGNL表达式获取Map中的数据 需要借助s:property
获取map的数据:都是根据Key获取value,所以我们要提供的是key。
如何表示key:使用#,后面的内容就表示key
获取ContextMap中的数据:<s:property value="#contextMap"/>
<hr/>
2、使用OGNL表达式获取三大域中的数据
也需要使用s:property标签
写法就是
#key.key
获取key为application的map中的数据
<s:property value="#application.applicationMap"/><br/>
<s:property value="#application.applicationAttr"/>
6.ValueStack对象:ValueStack是Struts的一个接口,字面意义为值栈,OgnlValueStack是ValueStack的实现类,客户端发起一个请求struts2架构会创建一个action实例同时创建一个OgnlValueStack值栈实例,OgnlValueStack贯穿整个 Action 的生命周期。
它是ContextMap中的一部分,里面的结构是一个List,是我们可以快速访问数据一个容器。它的封装是由struts2框架完成的。
1.通常情况下我们是从页面上获取数据。它实现了栈的特性(先进后出)。
2.一般情况下,我们都是根据debug标签中显示的Property Name来获取Property Value。当然我们也可以获取栈顶对象
3.在Action定义一个私有属性,并且提供公有get/set方法,那么该属性就会出现在值栈的Property Name中。显示的名称是根据get/set方法后面的内容决定的,与私有成员变量名称叫什么无关。
4.获取值栈中的数据,需要借助struts2的标签s:property
明确的事情:
1、获取值栈中的数据,我们只能根据值栈中对象的property name获取property value。
2、获取值栈中的数据,都是直接写属性名称,获取的就是值,并不需要使用任何符号。
它是把value属性的取值作为值栈中对象的property name,在值栈中从栈顶逐个查找,只要找到了就返回结果,并且不再继续查找。
7.El表达是增强:
a)Struts2框架中对EL表达式做了如下改变:
EL表达式原来的搜素顺序:
page Scope——>request Scope——>sessionScope——>application Scope
EL表达式改变后的搜索顺序:
page Scope—>request Scope—>valueStack—>contextMap—>sessionScope—>application Scope
b)struts2框架对request对象进行了包装,并且对getAttribute方法进行了增强
8.OGNL表达式中的符号总结:
#:1、获取大Map中数据,把后面的内容看成是key。
2、在使用struts2标签,创建Map对象时使用。<s:radio list="#{}">
%:1、使用%{''}把OGNL表达式强制看成是普通字符串
2、使用%{}把普通字符串强制看成是OGNL表达式
$:1、使用EL表达式的标识
2、在struts的配置文件中使用OGNL表达式
存取Java对象的任意属性,调用Java对象的方法,同时能够自动实现必要的类型转换。如果把表达式看作是一个带有语义的字符串,那么OGNL无疑成为了这个语义字符串与Java对象之间沟通的桥梁。
2.借助s:property标签输出内容到浏览器
a)导入标签库:
<%@ taglib uri="/struts-tags" prefix="s" %>
<s:property value="OGNL表达式" />
b)把一个OGNL表达式看成是字符串的方式是:
<s:property value="OGNL表达式" /> 或者<S:property value="'OGNL表达式'" />
c)OGNL表达式创建集合:
<s:radio name="gender" list="{'男','女'}" label="性别"/>
d)OGNL表达式创建map集合:
<s:radio name="gender" list="#{'male':'男','female':'女'}" label="性别"/>
3.ContextMap:它是OGNL上下文对象,是struts2中封装数据最大的对象.我们一次请求中所有用到的信息都可以在里面找到,它
是一个Map结构的对象,其中key是字符串,value是一个Object,封装的数据如下:
Map的key(类型是String)Map的Value (类型是Object) 说明信息
application Java.util.Map<String,Object> 封装的应用域中的所有数据
session Java.util.Map<String,Object> 封装的会话域中的所有数据
request Java.util.Map<String,Object> 封装的请求域中的所有数据
valueStack(特殊)com.opensymphony.xwork2.ognl.OgnlValueStack 它是List结构
parametersJava.util.Map<String,String[]> 封装的是请求参数
attr Java.util.Map<String,Object> 封装的是四大域的组合数据,从最小的域开始搜索
action com.opensymphony.xwork2.ActionSupport 当前执行的动作类对象
4.ActionContext:它是一个工具类,是struts2框架提供给我们的,可以让我们调用其中的方法,快速的操作ContextMap。用它操作OGNL上下文对象,比直接操作ContextMap要方便很多。
ActionContext就相当于对ContextMap进行了一次再封装。由于ActionContext是操作的ContextMap,而ContextMap中封了我们一次请求的所有数据,所以它的创建应该是每次请求访问Action时,
即核心控制器(StrutsPrepareAndExecuteFilter)的doFilter方法执行时,每次创建ActionContext时,把对象绑定到当前线程上。想了解更多可以去查看一下源码.
5.使用OGNL表达式获取Map中的数据:
1、使用OGNL表达式获取Map中的数据 需要借助s:property
获取map的数据:都是根据Key获取value,所以我们要提供的是key。
如何表示key:使用#,后面的内容就表示key
获取ContextMap中的数据:<s:property value="#contextMap"/>
<hr/>
2、使用OGNL表达式获取三大域中的数据
也需要使用s:property标签
写法就是
#key.key
获取key为application的map中的数据
<s:property value="#application.applicationMap"/><br/>
<s:property value="#application.applicationAttr"/>
6.ValueStack对象:ValueStack是Struts的一个接口,字面意义为值栈,OgnlValueStack是ValueStack的实现类,客户端发起一个请求struts2架构会创建一个action实例同时创建一个OgnlValueStack值栈实例,OgnlValueStack贯穿整个 Action 的生命周期。
它是ContextMap中的一部分,里面的结构是一个List,是我们可以快速访问数据一个容器。它的封装是由struts2框架完成的。
1.通常情况下我们是从页面上获取数据。它实现了栈的特性(先进后出)。
2.一般情况下,我们都是根据debug标签中显示的Property Name来获取Property Value。当然我们也可以获取栈顶对象
3.在Action定义一个私有属性,并且提供公有get/set方法,那么该属性就会出现在值栈的Property Name中。显示的名称是根据get/set方法后面的内容决定的,与私有成员变量名称叫什么无关。
4.获取值栈中的数据,需要借助struts2的标签s:property
明确的事情:
1、获取值栈中的数据,我们只能根据值栈中对象的property name获取property value。
2、获取值栈中的数据,都是直接写属性名称,获取的就是值,并不需要使用任何符号。
它是把value属性的取值作为值栈中对象的property name,在值栈中从栈顶逐个查找,只要找到了就返回结果,并且不再继续查找。
7.El表达是增强:
a)Struts2框架中对EL表达式做了如下改变:
EL表达式原来的搜素顺序:
page Scope——>request Scope——>sessionScope——>application Scope
EL表达式改变后的搜索顺序:
page Scope—>request Scope—>valueStack—>contextMap—>sessionScope—>application Scope
b)struts2框架对request对象进行了包装,并且对getAttribute方法进行了增强
8.OGNL表达式中的符号总结:
#:1、获取大Map中数据,把后面的内容看成是key。
2、在使用struts2标签,创建Map对象时使用。<s:radio list="#{}">
%:1、使用%{''}把OGNL表达式强制看成是普通字符串
2、使用%{}把普通字符串强制看成是OGNL表达式
$:1、使用EL表达式的标识
2、在struts的配置文件中使用OGNL表达式
阅读全文
0 0
- OGNL表达式存取值
- OGNL表达式与值栈
- OGNL表达式和值栈
- OGNL表达式
- ognl表达式
- OGNL表达式
- OGNL表达式 #%$
- OGNL表达式
- OGNL表达式
- ognl表达式
- Ognl表达式
- ognl表达式
- OGNL表达式
- OGNL表达式
- OGNL表达式
- ognl表达式
- OGNL表达式
- OGNL表达式 #%$
- Android 上传自己的开源库到Bintray(超简单哦)
- 双十一捡便宜指南 | 价值百万
- java jdk classpath作用
- 崩溃 [XXXX respondsToSelector:]: message sent to deallocated instance 0x7fe2d3e404f0
- Django 常用常见问题
- OGNL表达式存取值
- 双向数据绑定的三种方式
- http://mirrors.aliyun.com/help/raspbian
- 第八周作业
- 从0到1制作MacOS启动盘
- 高逼格程序员指南
- 一起感受下程序员的奇妙时刻!
- 土豪程序员的生活是怎样的...
- 2017年度程序员数据大揭秘:大数据就业前景广阔!