struts2 ognl存放数据
ongl存放数据可以存放在对象栈(root),也可以存放在map中
一、存放在map中
1.存放在map中可以分为存放在request、session、application
public String testPutDataToValueStack(){
/*
* 1.往request,session,application域中存放数据
* 2.观察内存结构
*/
ServletActionContext.getRequest().setAttribute("request_username", "username");
ActionContext.getContext().getSession().put("session_username", "username");
ServletActionContext.getServletContext().setAttribute("application_username","username");
ValueStack valueStack = ActionContext.getContext().getValueStack();
Object object = valueStack.getContext().get("request");
System.out.println(object);
return SUCCESS;
}
存放到request、session、application后valuestack的map中的内存结构

2.存放在map中的其他Entry中
public String testStringToMap(){
ActionContext.getContext().put("msg", "msg");
ValueStack valueStack = ActionContext.getContext().getValueStack();
Object object = valueStack.getContext().get("msg");
System.out.println(object);
return SUCCESS;
}
二、存放在对象栈中(root)
1.使用add方法存放
public String testObjectToRoot(){
Person person=new Person();
person.setName("cally");
CompoundRoot root = ActionContext.getContext().getValueStack().getRoot();
root.add(person);
//还一个指定存放位置,放0表示存放在栈顶
root.add(0, new Person());
//放入对象以后,加入的对象在root中的最后一个,原来有两个,因为root继承了ArrayList,所以就具有List中的属性
Object object = root.get(2);
System.out.println(((Person)object).getName()+"--"+root.size());
return SUCCESS;
}
2.使用set方法存放
public String testObjectToRoot2(){
ValueStack valueStack = ActionContext.getContext().getValueStack();
CompoundRoot root = valueStack.getRoot();
root.set(0, new Person());
return SUCCESS;
}
3.使用push方法进行存放
public String testObjectToRoot3(){
ValueStack valueStack = ActionContext.getContext().getValueStack();
CompoundRoot root = valueStack.getRoot();
root.push(new Person());//调用push方法,把对象压入到对象栈顶
return SUCCESS;
}
总结:
1、可以利用reqeust,session,application把一个数据放入到ValueStack的map中
2、可以利用ActionContext.getContext().put方法把一个数据放入到map中
3、可以利用ValueStack.getRoot().add(object)方法把一个对象放入到对象栈中(栈底)
4、可以利用ValueStack.getRoot().add(index,object)可以把一个对象放入到对象栈中 (index)指定位置
5、可以利用valueStack的set方法把对象放入到栈顶,放入到栈顶的是一个HashMap
6、可以利用valueStack的push方法把一个对象放入到对象栈的栈顶
struts2 ognl存放数据的更多相关文章
- 深入了解Struts2返回JSON数据的原理
首先来看一下JSON官方对于"JSON"的解释: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析 ...
- (转)Struts2返回JSON数据的具体应用范例
转载自 yshjava的个人博客主页 <Struts2返回JSON数据的具体应用范例> 早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具 ...
- Struts2返回JSON数据的具体应用范例
早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具体应用了,但苦于一直忙于工作难以抽身,渐渐的也淡忘了此事.直到前两天有同事在工作中遇到这个问题,来找 ...
- Struts2(Ognl)
OGNL(Object-Graph Navigation Language)全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整 ...
- android bundle存放数据详解
转载自:android bundle存放数据详解 正如大家所知道,Activity之间传递数据,是将数据存放在Intent或者Bundle中 例如: 将数据存放倒Intent中传递: 将数据放到Bun ...
- Jqgrid入门-结合Struts2+json实现数据展示(五)
DEMO用的是ssh框架实现的,具体怎么搭建的就不多做说明了.分页表格的数据操作难点就是数据展现.至于增删改直接用hibernate原生的方法实现即可. 初步分析:表格要实现分页,那么 ...
- Struts2中validate数据校验的两种常用方法
本文主要介绍Struts2中validate数据校验的两种方法及Struts2常用校验器. 1.Action中的validate()方法 Struts2提供了一个Validateable接口,这个接 ...
- 使用std::map和std::list存放数据,消耗内存比实际数据大得多
使用std::map和std::list存放数据,消耗内存比实际数据大得多 场景:项目中需要存储一个结构,如下程序段中TEST_DATA_STRU,结构占24B.但是使用代码中的std::list&l ...
- Struts2返回JSON数据的具体应用范…
Struts2返回JSON数据的具体应用范例 博客分类: Struts2 Struts2JSON 早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具 ...
随机推荐
- [LeetCode 题解]: Partition List
Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr ...
- CSS鼠标手势
属性名:cursor 属性值(手势状态): auto : 默认值.浏览器根据当前情况自动确定鼠标光标类型. all-scroll : IE6.0 有上下左右四个箭头,中间有一个圆点的光标.用于 ...
- sql 常用基础查询
*查询第一条记录:select top 1 * from tablename *随机查询N条记录:select top N * from table order by newid( ...
- C# 调用人脸识别 虹软ArcFace2.0实例
虹软SDK推出了2.0版本,这个版本的所有API都集合在一个动态库里面,再通过引擎库调用,比1.2版本相对轻便了很多. 了解详情戳这里 小西瓜也迫不及待弄了一个新版本的C#实例,基于VS2013开发的 ...
- Linq的Join == 两个foreach
因为实在太懒了,很久没动笔,今天强迫自己写一个小短篇. 之前讨论过用SelectMany代替两重的foreach循环.今天我们看一下Join和foreach的关系. 首先是Join的定义 public ...
- ANE-调用原生地图注意点
打包的bat bin/adt -package -target ane test.ane extension.xml -swc AneTest.swc -platform iPhone-ARM -C ...
- Yaoge’s maximum profit HDU - 5052
Yaoge’s maximum profit Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/ ...
- 爬取lol皮肤
#!/usr/bin/python # -*- coding: utf-8 -*- # data:2018-11-23 # user:fei import re import requests imp ...
- 六、linux目录结构知识
1.显示行号: cat -n 2.set nu 3.tail -f a.txt 查看文件的尾部变化 4.w 当前的登陆用户 5.yum包管理工具底层调用的还是 rpm -ivh 包名 ...
- 【Oracle 12c】最新CUUG OCP-071考试题库(58题)
58.(16-1) choose the best answer: Examine the structure of the BOORSTRANSACTIONS table: Examine the ...