Struts2 | 在struts2值棧中存儲數據的三種方式

Struts2 | 在struts2值棧中存儲數據的三種方式數據結構

  1. 使用值棧對象中的set方法

步驟:this

在action中獲取值棧對象 調用值棧對象的set方法存值 代碼示例:debug

public class ValueStackDemoAction extends ActionSupport {code

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標籤來查看一下值棧的結構,如圖:get

set方法存值後值棧中的結構.png 如圖咱們清晰的看到,set方式是使用HashMap的方式將值存入到值棧中,而後取值的時候更具Map中的key值便可將其value取出。io

  1. 使用值棧對象中的push方法

步驟:class

在action中獲取值棧對象 調用值棧對象的push方法存值 代碼示例:struts2

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集合存放進了值棧中。

相關文章
相關標籤/搜索