博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2 | 在struts2值栈中存储数据的三种方式
阅读量:6813 次
发布时间:2019-06-26

本文共 2613 字,大约阅读时间需要 8 分钟。

hot3.png

Struts2 | 在struts2值栈中存储数据的三种方式

  1. 使用值栈对象中的set方法

步骤:

在action中获取值栈对象 调用值栈对象的set方法存值 代码示例:

public class ValueStackDemoAction extends ActionSupport {

public String execute() throws Exception {    //1 获取值栈对象    ActionContext context = ActionContext.getContext();    ValueStack stack = context.getValueStack();    //2 调用值栈对象中的set方法    stack.set("demo", "DemoData");            return "success";}

} set方法使用map方式储存值,第一个元素为String类型的key,第二个元素为Object类型的value,value中可以存放任意对象。

使用set方法向值栈中存值后,我们用debug标签来查看一下值栈的结构,如图:

set方法存值后值栈中的结构.png 如图我们清晰的看到,set方式是使用HashMap的方式将值存入到值栈中,然后取值的时候更具Map中的key值即可将其value取出。

  1. 使用值栈对象中的push方法

步骤:

在action中获取值栈对象 调用值栈对象的push方法存值 代码示例:

public class ValueStackDemoAction extends ActionSupport {

public String execute() throws Exception {    //1 获取值栈对象    ActionContext context = ActionContext.getContext();    ValueStack stack = context.getValueStack();    //2 调用值栈对象中的push方法    stack.push("abcd");        return "success";}

} push方法只接收一个Object类型的参数,可以存放任意类型的对象

push方式是自动将所存的数据转为对应的对象类型,然后放入值栈中,如图:

push方法存值后值栈中的结构.png 3. 在action中定义变量(或对象),使用相应的get方法(最常用,最重要的方法)

步骤:

在action定义变量 生成变量的get方法 在执行方法里面为变量赋值 代码示例:

public class ValueStackDemoAction extends ActionSupport {

//1. 声明变量public String name;//2. 生成变量的get方法public String getName(){    return name;}//3. 在执行方法中为变量赋值public String execute() throws Exception {    name = "DemoData";    return "success";}

} 我们来看一下使用这种方法存值后值栈中的数据结构,如图:

使用变量存值方式存值后值栈的结构.png 可以看出这种方式存值不会在值栈中创建新的对象,而是直接将值存进了值栈中原有的action对象中,这种方式的好处就是避免了值栈中存储空间的浪费,不用为每个值都分别设置存储空间。因此这种方式更加常用。

使用这种方法做一个向值栈中存放一个list集合的示例

代码如下:

User实体类

public class User {

private String username; private String password; private String address; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } } Action类

public class ListDemoAction extends ActionSupport {

// 1. 定义list变量 private List<User> list = new ArrayList<User>();

// 2. 生成get方法 public List<User> getList() { return list; }

public String execute() throws Exception { //3 向list中设置值 User user1 = new User(); user1.setUsername("小奥"); user1.setPassword("123"); user1.setAddress("美国");

User user2 = new User(); user2.setUsername("小王"); user2.setPassword("250"); user2.setAddress("越南"); list.add(user1); list.add(user2); return "success";

} 值栈中的结构如下:

使用第三种方法向值栈中存放list集合后值栈的结构.png 由图可知我们已经成功的这个list集合存放进了值栈中。

转载于:https://my.oschina.net/u/2346823/blog/1574954

你可能感兴趣的文章
ccpcfinal总结
查看>>
委托解绑的一个小问题
查看>>
汇编语言(王爽)第七章与实验6
查看>>
lumion制作海上明月5.29
查看>>
ruby 1.9.3 字符和asscii转换
查看>>
bzoj千题计划176:bzoj1199: [HNOI2005]汤姆的游戏
查看>>
高斯—若尔当(约当)消元法解异或方程组+bitset优化模板
查看>>
2016vijos 1-1 兔子的字符串(后缀数组 + 二分 + 哈希)
查看>>
HTML基本组成结构与标签的认识
查看>>
springMVC学习(1)
查看>>
mysql链接 及备份
查看>>
中国网和七牛云达成战略合作,携手打造国际化融媒中心
查看>>
简易计算器的制作
查看>>
zwPython,字王集成式python开发平台,比pythonXY更强大、更方便。
查看>>
sql常用语句集合(工作总结)
查看>>
C#学习笔记(一)
查看>>
【转】Ubuntu 16.04安装配置TensorFlow GPU版本
查看>>
Cocos2d-x开发---改变父节点颜色、透明度影响子节点
查看>>
借助mapshaper的简化来修复geojson的拓扑错误
查看>>
实验五
查看>>