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存放数据的更多相关文章

  1. 深入了解Struts2返回JSON数据的原理

    首先来看一下JSON官方对于"JSON"的解释: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析 ...

  2. (转)Struts2返回JSON数据的具体应用范例

    转载自 yshjava的个人博客主页 <Struts2返回JSON数据的具体应用范例> 早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具 ...

  3. Struts2返回JSON数据的具体应用范例

    早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具体应用了,但苦于一直忙于工作难以抽身,渐渐的也淡忘了此事.直到前两天有同事在工作中遇到这个问题,来找 ...

  4. Struts2(Ognl)

    OGNL(Object-Graph Navigation Language)全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整 ...

  5. android bundle存放数据详解

    转载自:android bundle存放数据详解 正如大家所知道,Activity之间传递数据,是将数据存放在Intent或者Bundle中 例如: 将数据存放倒Intent中传递: 将数据放到Bun ...

  6. Jqgrid入门-结合Struts2+json实现数据展示(五)

    DEMO用的是ssh框架实现的,具体怎么搭建的就不多做说明了.分页表格的数据操作难点就是数据展现.至于增删改直接用hibernate原生的方法实现即可.         初步分析:表格要实现分页,那么 ...

  7. Struts2中validate数据校验的两种常用方法

    本文主要介绍Struts2中validate数据校验的两种方法及Struts2常用校验器.  1.Action中的validate()方法 Struts2提供了一个Validateable接口,这个接 ...

  8. 使用std::map和std::list存放数据,消耗内存比实际数据大得多

    使用std::map和std::list存放数据,消耗内存比实际数据大得多 场景:项目中需要存储一个结构,如下程序段中TEST_DATA_STRU,结构占24B.但是使用代码中的std::list&l ...

  9. Struts2返回JSON数据的具体应用范…

    Struts2返回JSON数据的具体应用范例 博客分类: Struts2 Struts2JSON  早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具 ...

随机推荐

  1. [LeetCode 题解]: Partition List

    Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr ...

  2. CSS鼠标手势

    属性名:cursor 属性值(手势状态): auto  :  默认值.浏览器根据当前情况自动确定鼠标光标类型. all-scroll  : IE6.0  有上下左右四个箭头,中间有一个圆点的光标.用于 ...

  3. sql 常用基础查询

    *查询第一条记录:select   top   1   *   from   tablename *随机查询N条记录:select top N * from table order by newid( ...

  4. C# 调用人脸识别 虹软ArcFace2.0实例

    虹软SDK推出了2.0版本,这个版本的所有API都集合在一个动态库里面,再通过引擎库调用,比1.2版本相对轻便了很多. 了解详情戳这里 小西瓜也迫不及待弄了一个新版本的C#实例,基于VS2013开发的 ...

  5. Linq的Join == 两个foreach

    因为实在太懒了,很久没动笔,今天强迫自己写一个小短篇. 之前讨论过用SelectMany代替两重的foreach循环.今天我们看一下Join和foreach的关系. 首先是Join的定义 public ...

  6. ANE-调用原生地图注意点

    打包的bat bin/adt -package -target ane test.ane extension.xml -swc AneTest.swc -platform iPhone-ARM -C ...

  7. Yaoge’s maximum profit HDU - 5052

    Yaoge’s maximum profit Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/ ...

  8. 爬取lol皮肤

    #!/usr/bin/python # -*- coding: utf-8 -*- # data:2018-11-23 # user:fei import re import requests imp ...

  9. 六、linux目录结构知识

    1.显示行号: cat -n 2.set    nu 3.tail -f  a.txt  查看文件的尾部变化 4.w  当前的登陆用户 5.yum包管理工具底层调用的还是  rpm  -ivh  包名 ...

  10. 【Oracle 12c】最新CUUG OCP-071考试题库(58题)

    58.(16-1) choose the best answer: Examine the structure of the BOORSTRANSACTIONS table: Examine the ...