struts2 向值栈中放数据的三种方式

一、获取值栈的对象,调用值栈的set方法

1、代码

ValuesStackAction1.java

package work.zhangdoudou.Action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.util.ValueStack;

public class ValuesStackAction1 extends ActionSupport{
    @Override
    public String execute() throws Exception {
        //第一种方式使用值栈对象里面的set方法
        //1取值栈对象
        ActionContext context=ActionContext.getContext();
        ValueStack stack=context.getValueStack();
        stack.set("username", "doudou");
        
        return SUCCESS;
    }
}

struts.xml





    
    
    
        
            /ValuesStack.jsp
           
        
    

ValuesStack.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>  


  
    My JSP 'ValuesStackAction.jsp' starting page
    
    
    
        
    
    
    
  
  
   
  

web.xml



  struts2_ognl
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  
  
    struts2
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  
  
    struts2
    /*
  

2、运行结果
image.png
  • 有一个java.util.HashMap 这个是我们放的值
  • root其实是list集合在list中放了一个map

二、获取值栈对象,调用值栈的push方法

1、代码

ValuesStackAction1.java

package work.zhangdoudou.Action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.util.ValueStack;

public class ValuesStackAction1 extends ActionSupport{
    @Override
    public String execute() throws Exception {
        //第一种方式使用值栈对象里面的set方法
        //1取值栈对象
        ActionContext context=ActionContext.getContext();
        ValueStack stack=context.getValueStack();
        //2set方法
        stack.set("username", "doudou");
        
        //3调用push方法   最后放的为栈顶元素
        stack.push("lisi");
        
        return SUCCESS;
    }
}
2、执行效果
image.png
  • 它把push的元素当做字符串放进值栈

三、在action定义变量,生成get方法(常用)

1、代码

ValuesStackAction2.java

package work.zhangdoudou.Action;

import com.opensymphony.xwork2.ActionSupport;

public class ValuesStackAction2 extends ActionSupport{
    //1定义
    private String name;
    //2生成个get方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String execute() throws Exception {
        //在执行的方法里向变量设置值
        name="wangwu";
        
        return SUCCESS;
    }
}

struts.xml


            /ValuesStack.jsp
        
2、运行结果
image.png
  • 这样做不用重新分配空间,可以减少空间的langfeo

你可能感兴趣的:(struts2 向值栈中放数据的三种方式)