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& ...
随机推荐
- [JavaEE] Hibernate连接池配置测试
转载自51CTO http://developer.51cto.com/art/200906/129914.htm Hibernate支持第三方的连接池,官方推荐的连接池是C3P0,Proxool,以 ...
- 常见Java集合的实现细节
1. Set和Map Set代表一种集合元素无序.集合元素不可重复的集合,Map则代表一种由多个key-value对组成的集合,Map集合类似于传统的关联数组.表面上看它们之间相似性很少,但实际上Ma ...
- web 端即时通讯
1. 前言 Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Serve ...
- NOIP2011 day2 第一题 计算系数
计算系数 NOIP2011 day2 第一题 描述 给定一个多项式(ax+by)^k,请求出多项式展开后x^n*y^m项的系数. 输入格式 共一行,包含5 个整数,分别为 a ,b ,k ,n ,m, ...
- Monad的重点
Monad是非常强有力的概念,在介绍Monad是什么和如何工作的之前,我们应该先确认Monad能解决什么问题.Monad是各种编程问题的的 meta solution,它不是某种特定问题的解决方案,我 ...
- css 画三角形
<div class='triangle-rihgt'></div> <div class='triangle-top'></div> <div ...
- javascript中的原型对象
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- MSSQL数据库设置单用户模式后无法连上解决办法
设置数据库单用户模式后, 发现用系统管理员账号无法连接数据库, 用sa账号也不行. 首先, 马上去查了一下有什么进程比这个连接给占用了 SELECT [Spid] = session_Id , eci ...
- 用Navicat自动备份mysql数据库
以下文章转载自https://blog.csdn.net/u013628152/article/details/54909885,放在自己的博客园以供后面方便查询 —————————————————— ...
- 【从零开始】【Java】【0】装软件些
闲聊 其实最先写的是1,所以拐回头写的只能是0了. 因为要在不同的电脑上搞这个东西,必然涉及到装机,当然只是装我们用的这些,且是最基础的部分了. 大晚上的睡不着觉,起来,大概1个小时全部搞定,随便记下 ...