第一种方式:使用值栈对象里面的set方法
HashMap类型存储
public String execute() throws Exception {
// 1 获取值栈对象
ActionContext context = ActionContext.getContext();
ValueStack stack = context.getValueStack();
// 2 调用set方法
stack.set("itcast", "itcastitheima");
return SUCCESS;
}
第二种方式:使用值栈对象里面的push方法
String类型存储
public String execute() throws Exception {
// 1 获取值栈对象
ActionContext context = ActionContext.getContext();
ValueStack stack = context.getValueStack();
// 2 调用push方法
stack.push("abcd");
return SUCCESS;
}
第三种方式:在action定义变量
public class ValueStackAction extends ActionSupport {
// 1 定义变量
private String name;
// 2 生成变量的get方法
public String getName() {
return name;
}
@Override
public String execute() throws Exception {
// 3 在执行的方法里面向变量设置值
name = "abcd";
return SUCCESS;
}
}
注意
调用set方法和调用push方法,都会在值栈中开辟一个新空间,如HashMap集合、String,但是,直接在action中定义变量,不会再在值栈中开辟空间而是直接存储在值栈中,避免了空间浪费。
向值栈存放对象
- 定义对象变量
- 生成变量的get方法
- 在执行的方法里面向对象中设置值
public class ValueStackAction extends ActionSupport {
// 1 定义对象变量
private User user = new User();
// 2 生成get方法
public User getUser() {
return user;
}
@Override
public String execute() throws Exception {
// 3 向值栈的user里面放数据
user.setUsername("lucy");
user.setPassword("123");
user.setAddress("美国");
return SUCCESS;
}
}
向值栈存放list集合
- 定义list集合变量
- 生成变量的get方法
- 在执行的方法里面向list集合设置值
public class ValueStackAction extends ActionSupport {
// 1 定义list变量
private List<User> list = new ArrayList<User>();
// 2 生成get方法
public List<User> getList() {
return list;
}
@Override
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;
}
}