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数据的原理和具 ...
随机推荐
- spring获取webapplicationcontext,applicationcontext几种方法详解(转载)
转载自 http://www.blogjava.net/Todd/archive/2010/04/22/295112.html 方法一:在初始化时保存ApplicationContext对象 代码: ...
- 深入CSS属性(九):z-index
如果你不是一名csser新手,想必你对z-index的用法应该有个大致的了解了吧,z-index可以控制定位元素在垂直于显示屏方向(Z 轴)上的堆叠顺序,本文不去讲述基本的API如何使用,而是去更深入 ...
- Buffer Pool--内存总结2
按内存划分: 1.DATABASE CACHE 用于存放数据页面的缓冲区,8KB每页 2.各项组件 A)数据库连接(CONNECTION) B)通用数据,如果事务上下文,表和索引的元数据 C)执行计划 ...
- php实现循环链表
<?php /** * php实现链表 * Date: 2018/5/18 * Time: 下午5:59 */ class Node { public $nodeId = 0; public $ ...
- win10开始菜单任务栏点击无反应
win+r,输入powershell,确定,输入Stop-Process -Name explorer,回车(这行代码是结束explorer进程,结束后它会自动重启)
- 给洛谷填坑的spj……
这里提供了洛谷某些题的$special\ judge$,供需要的oier拿过去对拍. 1.P3825 #include "testlib.h" using namespace st ...
- django使用haystack来调用Elasticsearch搜索引擎
如何使用django来调用Elasticsearch实现全文的搜索 环境:django ==1.11.11 Haystack为Django提供了模块化的搜索.它的特点是统一的,熟悉的API,可以让你在 ...
- setInterval(),setTimeout(),location.reload(true)
1,setInterval() setInterval()方法可以按照指定的周期来调用函数或表达式,他会不停地调用函数,直到调用clearInterval()方法或窗口关闭.由setInterval( ...
- 关于sql注入的简要演示
文章分类:周稿 团队成员:sundy 首先可能大家都会问什么是sql? Sql是数据库的一种类型,是用来存储网站数据的. 每当我们点开一个网站,就会从网站的数据库中获取相关的内容. 我们来梳理一下 ...
- S2-052复现过程(附POC利用)
漏洞编号:CVE-2017-9805(S2-052) 影响版本:Struts 2.5 - Struts 2.5.12 漏洞概述:问题出现在struts2-rest-plugin插件XStreamHan ...