Struts2值栈的相关操作
import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.util.CompoundRoot;
import com.opensymphony.xwork2.util.ValueStack; public class ValueStackAction extends ActionSupport{
public String testValueStack(){
ValueStack valueStack = ActionContext.getContext().getValueStack();
ValueStack valueStack2 = ServletActionContext.getContext().getValueStack();
ValueStack valueStack3 = (ValueStack)ServletActionContext.getRequest().getAttribute("struts.valueStack");
System.out.println(valueStack);
System.out.println(valueStack2);
System.out.println(valueStack3);
return "";
}
/*
* 把数据放入对象栈中的第一种方式
*/
public String addDataToObjectStack_1(){
ValueStack valueStack = ActionContext.getContext().getValueStack();
/**
* 把字符串加入到了CompoundRoot的第一个位置,我们把第一个位置称为对象栈的栈顶
*/
valueStack.push("aaaaa");
return "";
} /*
* 把数据放入对象栈中的另外一种方式
*/
public String addDataToObjectStack_2(){
ValueStack valueStack = ActionContext.getContext().getValueStack();
/**
* 把字符串加入到了对象栈中
*/
valueStack.getRoot().add("aaaa");
return "";
} /*
* 把数据放入对象栈中的第三种方式
*/
public String addDataToObjectStack_3(){
ValueStack valueStack = ActionContext.getContext().getValueStack();
/**
* 把字符串加入到了对象栈中
* 把一个map放入到了对象栈的栈顶,"aaa"作为key,"asfd"作为value
*/
ActionContext.getContext().getValueStack().set("aaa", "asfd");
return "";
} /**
* 从对象栈中把数据提取出来的方式
* 第一种方式
*/
public String addDataFromObjectStack_1(){
ValueStack valueStack = ActionContext.getContext().getValueStack();
/**
* 提取栈顶的元素
*/
ActionContext.getContext().getValueStack().getRoot().get(0);
return "";
} /**
* 从对象栈中把数据提取出来的方式
* 另外一种方式
*/
public String addDataFromObjectStack_2(){
ValueStack valueStack = ActionContext.getContext().getValueStack();
/**
* 提取栈顶的元素
*/
ActionContext.getContext().getValueStack().peek();
return "";
} /*
* 把对象栈的栈顶的元素移除
*/
public String removeDataFromObjectStack_1(){
ValueStack valueStack = ActionContext.getContext().getValueStack();
/**
* 移除栈顶的元素
*/
ActionContext.getContext().getValueStack().getRoot().remove(0);
return "";
} /*
* 把对象栈的栈顶的元素移除
*/
public String removeDataFromObjectStack_2(){
ValueStack valueStack = ActionContext.getContext().getValueStack();
/**
* 移除栈顶的元素
*/
ActionContext.getContext().getValueStack().pop();
return "";
} /**
* 把一个key,value键值对放入到request域中
*/
public String putObjectToRequest(){
ServletActionContext.getRequest().setAttribute("aaa", "aaa");
ValueStack valueStack = ActionContext.getContext().getValueStack();
return "";
} /**
* 把一个key,value键值对放入到application域中
*/
public String putObjectToApplication(){
ServletActionContext.getServletContext().setAttribute("aaaa", "aaaa");
ValueStack valueStack = ActionContext.getContext().getValueStack();
return "";
} /**
* 把一个key,value直接放在map栈中
*/
public String putDataToMapStack_1(){
ValueStack valueStack = ActionContext.getContext().getValueStack();
ActionContext.getContext().put("aaa", "aaaa");
return "";
}
}
Struts2值栈的相关操作的更多相关文章
- struts2值栈内部数据结构详解
值栈是struts2内部一片很重要的区域,我在初学的时候,发现对于值栈这个数据结构的理解不是很深刻.例如OGNLContext是什么,ActionContext和值栈有什么关系.为什么ActionCo ...
- 10.Struts2值栈
1.什么是值栈 * 值栈就相当于Struts2框架的数据的中转站,向值栈存入一些数据.从值栈中获取到数据. * ValueStack 是 struts2 提供一个接口,实现类 OgnlValueSta ...
- Struts2值栈详解
1. 关于值栈: 1). helloWorld 时, ${productName} 读取 productName 值, 实际上该属性并不在 request 等域对象中, 而是从值栈中获取的. 2). ...
- Struts2值栈
一.前言 很多事儿啊,就是“成也萧何败也萧何”,细想一些事儿心中有感,当然,感慨和本文毛关系都没有~想起之前有篇Struts2中值栈的博客还未完工,就着心中的波澜,狂咽一把~ 二.正文 博文基于:st ...
- Struts2 - 值栈(ValueStack)
1. 关于值栈: 1). helloWorld 时, ${productName} 读取 productName 值, 实际上该属性并不在 request 等域对象中, 而是从值栈中获取的. 2). ...
- struts2 值栈分析
目录 一.值栈分为两个逻辑部分 二.Struts2 利用 s:property 标签和 OGNL表达式来读取值栈中的属性值 1.值栈中的属性值: 2.读取对象栈中对象的属性: 3.默认情况下,Acti ...
- struts2值栈分析
前段日子对ognl表达式不是很理解,看了几本书上关于ognl表达式的描述后还是感觉很难,前几天学习了struts2中值栈的内容,现在感觉ognl表达式其实很容易. struts2中利用值栈来存储数据, ...
- struts2值栈ValueStack中都有哪些东西?
com.opensymphony.xwork2.dispatcher.HttpServletRequest application com.opensymphony.xwork2.dispatcher ...
- 【基于初学者的SSH】struts2 值栈的详解与struts2标签库+ognl表达式
一:什么是值栈:struts2里面本身提供的一种存储机制,类似于域对象,值栈,可以存值和取值 特点:先进后出,最上面的元素叫做栈顶,也叫压栈. <s:debug></s:debug& ...
随机推荐
- Linux查找并杀死僵尸进程
1.查看系统是否有僵尸进程 使用Top命令查找,当zombie前的数量不为0时,即系统内存在相应数量的僵尸进程. 2.定位僵尸进程 使用命令ps -A -ostat,ppid,pid,cmd |gre ...
- CI中的文件上传
//首先在控制器中装载url类和view视图: //在view视图中创建一个表单,注:在做文件上传一定要写encype=“multipart/form-data”: //form表单的提交页面应该使用 ...
- Android studio 隐藏toolbar上的app title
getSupportActionBar().setDisplayShowTitleEnabled(false);
- 7 Python+Selenium浏览器设置
[环境信息] python3.6+selenium3.0.2+Firefox50.0+win7 [浏览器设置方法] 1.浏览器最大化:maximize_window() 2.设置浏览器宽.高:set_ ...
- 关于ZBrush中Subtool的小秘密
想问大家一个问题,你们刚开始学习ZBrush 3D图形绘制软件的时候,是不是特别迷茫?有没有人和小编一样,一直以为ZBrush中的Subtools就相当于Layers呢? 经过长时间的实践之后,小编才 ...
- gulp打包压缩代码以及图片
1.首先全局安装gulp 全局安装就不做介绍了 初学gulp,终于把常用的配置,api,语法弄明白了! gulp插件地址:http://gulpjs.com/plugins gulp官方网址:http ...
- F5 datasheet
- jquery为元素绑定事件
语法 $(selector).live(event,data,function) 参数event 必需,规定附加到元素的一个或多个事件.由空格分隔多个事件,必须是有效的事件.data 可选,规定传递到 ...
- jmeter的组成
1.jmeter的组成 线程组:控制多线程并发 断言:预期是否与实际结果一致,性能测试经验不建议做断言 定时器:自已操作线程停顿的时间 监听器:调试自已的脚本和对系统的监控 配置原件:配置的插件 后置 ...
- Python笔记7----Pandas中变长字典Series
1.Series概念 类似一维数组的对象,由数据和索引组成 2.Series创建 用Series()函数创建,0,1,2为series结构自带的索引. 可以自己指定索引值,用index,也可以直接用字 ...