值栈与ognl
ValueStack (值栈):
–ObjectStack: Struts 把Action
和相关对象压入
ObjectStack中
–ContextMap: Struts把各种各样的映射关系(一些Map
类型的对象)压入
ContextMap中. 实际上就是对ActionContext的一个引用
–parameters:该Map
中包含当前请求的请求参数
–request:该
Map 中包含当前 request对象中的所有属性
–session:该
Map 中包含当前 session对象中的所有属性
–application:该Map
中包含当前 application
对象中的所有属性
–attr:
该 Map 按如下顺序来检索某个属性: request, session, application
OGNL表达式
对象-图导航语言)访问到值栈(ValueStack)里的对象属性
2、若希望访问值栈中 ContextMap中的数据,需要给OGNL表达式加上一个前缀字符#.如果没有前缀字符#,搜索将在
ObjectStack里进行.
3、property标签:Struts2的property
标签用来输出值栈中的一个属性值.
4、使用ognl读取ObjectStack里的对象的属性
a、若想访问 Object Stack里的某个对象的属性.
可以使用以下几种形式之一:
object.propertyName
object[ 'prpertyName' ]
object[ " prpertyName " ]
b、ObjectStack里的对象可以通过一个从零开始的下标来引用.
ObjectStack里的栈顶对象可以用[0]
来引用,它下面的那个对象可以用
[1]引用.
若希望返回栈顶对象的message
属性值: [0].message或[0][ “message” ]或[0][‘ message’ ]
c、若在指定的对象里没有找到指定的属性,则到指定对象的下一个对象里继续搜索.即[n]的含义是从第
n 个开始搜索,而不是只搜索第n
个对象
d、若从栈顶对象开始搜索,则可以省略下标部分,即 直接写为 : message
e、结合property标签,可以写为 <s:property value=" [0].message "> 或 <s:property value=" message ">
5、使用ognl读取ContextMap里的对象的属性
a、若想访问ContextMap里的某个对象的属性,可以使用以下几种形式之一:
# object.propertyName
#object[ 'prpertyName' ]
#object[ " prpertyName " ]
b、示例:
属性: #session.code
属性的 name
属性值: #request.customer.name
的顺序)的lastAccessDate属性: #attr.lastAccessDate
6. 调用字段和方法
调用
b、默认情况下, Struts2
不允许调用任意 Java 类静态方法, 需要重新设置struts.ognl.allowStaticMethodAccess标记变量的值为true,即
<!-- 打开静态方法的OGNL调用 -->
<constant name="struts.ognl.allowStaticMethodAccess " value="true"/>
object 是
Object Stack 栈里的某个对象的引用:
7、访问数组类型的属性
<!-- 访问数组对象的属性 -->
<%
String[] names=new String[]{"aa","bb","cc","dd"};
request.setAttribute("names", names);
%> length:<s:property value="#attr.names.length"/>
names[2]: <s:property value="#attr.names[2]"/>
8、访问List类型的属性
List 的各个元素是字符串,
以逗号分隔,并且带方括号
size 的方法查出给定List
的长度:colors.size或
colors.size()
isEmpty来得知给定的List
是不是空.colors.isEmpty或
colors.isEmpty()
List 与声明一个
Java 数组是相同的:{“Red”,“Black”, “Green”}
9、访问Map 类型的属性
类型的属性将以如下所示的格式返回它所有的键值对:
需要使用如下格式:map[key]
或 size() 得出某个给定的Map
的键值对的个数
检查某给定 Map
是不是空.
#{key1:value1,key2:value2,........,keyn:valuen}
值栈与ognl的更多相关文章
- Struts2的值栈和OGNL牛逼啊
Struts2的值栈和OGNL牛逼啊 一 值栈简介: 值栈是对应每个请求对象的一套内存数据的封装,Struts2会给每个请求创建一个新的值栈,值栈能够线程安全的为每个请求提供公共的数据存取服务. 二 ...
- 关于Struts2中的值栈与OGNL表达式
1.1.1 OGNL概述: Object Graphic Navigation Language(对象图导航语言)的缩写 * EL :OGNL比EL功能强大很多倍. 它是一个开源项目. ...
- (四)值栈与OGNL
所有的学习我们必须先搭建好Struts2的环境(1.导入对应的jar包,2.web.xml,3.struts.xml) 第一节:值栈简介 值栈是对应每个请求对象的一套内存数据的封装,Struts2 会 ...
- 值栈和OGNL 之 7.1 值栈
7.1 值栈 7.1.1 值栈是什么 简单的说:值栈是对应每一个请求对象的轻量级的内存数据中心. Struts2中一个很激动人心的特性就是引入了值栈,在这里统一管理着数据,供Action.Resu ...
- Struts2基础学习(七)—值栈和OGNL
目录: 一.值栈 二.OGNL表达式 一.值栈(ValueStack) 1.定义 ValueStack贯穿整个Acton的生命周期,每个Action类的对象实例都拥有一个ValueStack ...
- Struts(九):值栈(OGNL)
引言 在我们开发过程中,往往会使用一个对像传递到一个具体的action中,之后到跳转页面中访问对应对象的具体的参数. 比如:我们搭建一个struts2项目: 回顾下如何搭建strut2: 1.下载的s ...
- 学习Struts--Chap05:值栈和OGNL
1.值栈的介绍 1.1 值栈的介绍: 值栈是对应每一个请求对象的数据存储中心,struts2会给每一个请求对象创建一个值栈,我们大多数情况下不需要考虑值栈在哪里,里面有什么,只需要去获取自己需要的数据 ...
- Struts2知识点小结(三)--值栈与ognl表达式
1.问题一 : 什么是值栈 ValueStack 回顾web阶段 数据交互问题? 客户端提交数据 到 服务器端 request接受数据+BeanUtils实体封装 ...
- 走进Struts2(五)— 值栈和OGNL
值栈 1.值栈是什么? 简单说:就是相应每个请求对象的轻量级的内存数据中心. Struts2引入值栈最大的优点就是:在大多数情况下,用户根本无须关心值栈,无论它在哪里,不用管它里面有什么,仅仅须要去获 ...
随机推荐
- ctrlsf插件
输入CtrlSF pattern <dir>来搜索 想要搜索当前文件,用CtrlSF pattern %p(或者C-R %) 在结果界面,p键预览,回车进入闭关内关闭搜索结果框,t键打开一 ...
- UIColor的用法
UIColor,CGColor,CIColor的区别和联系 layer.shadowColor = [UIColor redColor].CGColor; 这个是今天用到的.顺便总结一下. 1.UIC ...
- mysql备份恢复数据库据/表
备份单个数据库,只备份表,如要恢复,必须先创建一个数据库[root@s]# mysqldump -u root -p dbname1 > dbname1.sql[root@s]# mysql - ...
- 百度HTTPS加密搜索有什么用?
前段时间,我曾提到百度支持移动端HTTPS SSL加密搜索,用以保护用户隐私.最近,百度开始支持PC端HTTPS SSL加密搜索,现在可以启用 https://www.baidu.com 搜索.我很少 ...
- UVa 10003 (可用四边形不等式优化) Cutting Sticks
题意: 有一个长为L的木棍,木棍中间有n个切点.每次切割的费用为当前木棍的长度.求切割木棍的最小费用. 分析: d(i, j)表示切割第i个切点到第j个切点这段所需的最小费用.则有d(i, j) = ...
- Java Web编程的主要组件技术——JSP
参考书籍:<J2EE开源编程精要15讲> JSP(Java Server Page)页面由HTML代码和嵌入其中的Java代码组成. 简单的JSP页面如: <html> < ...
- qq互联(connect.qq.com)取用户信息的方法
<?php //应用的APPID$app_id = "YOUR_APP_ID";//应用的APPKEY$app_secret = "YOUR_APP_KEY&quo ...
- Linux busybox mount -a fstab
/*********************************************************************** * Linux busybox mount -a fs ...
- HDU 2444 The Accomodation of Students (偶图判定,匈牙利算法)
题意: 有一堆的学生关系,要将他们先分成两个组,同组的人都不互不认识,如果不能分2组,输出No.若能,则继续.在两组中挑两个认识的人(每组各1人)到一个双人房.输出需要多少个双人房? 思路: 先判定是 ...
- Java [Leetcode 223]Rectangle Area
题目描述: Find the total area covered by two rectilinear rectangles in a 2D plane. Each rectangle is def ...