想飞的程序员

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

ValueStack对象:

ValueStack, 即值栈对象。

值栈对象:

         是整个struts数据存储的核心,或者叫中转站。

         用户每次访问struts的action,都会创建一个Action对象、值栈对象、ActionContext对象;  然后把Action对象放入值栈中; 最后再把值栈对象放入request中,传入jsp页面。

(key: struts.valueStack);     开发者只需要通过ActionContext对象就可以访问struts的其他的关键对象。 (ActionContext是给开发者用的,便于学习与使用。)

 

public class OgnlDemo2 extends ActionSupport{
    
    // 根元素值
    private User user = new User(100,"Jacks");
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
    
    @Override
    public String execute() throws Exception {
        
        ActionContext ac = ActionContext.getContext();
        // 映射数据
        ac.getContextMap().put("request_data", "request_data");
        // 数据存储request
//        Map<String,Object> map = (Map<String, Object>) ac.get("request");   得到request对象
//        map.put("request_data", "request_data");
//        map.put("cn", "China");
        
        ac.getSession().put("Session_data", "Session_data");
        ac.getApplication().put("Application_data", "Application_data");
        
        
        // 二、值栈对象的存储数据的原理
        ValueStack vs = ac.getValueStack();
        /***************操作根元素的几种方法*****************/
        // 设置数据: 入栈
        //vs.push(new User(1002,"Tom"));    // 栈顶
        //vs.pop();                        // 移除栈顶元素
        
        // 如何存储?  map结构存储  
        //vs.set("user1", new User(1,"Jacky1"));
        //vs.set("user2", new User(2,"Jacky2"));
        
        
        return super.execute();
    }

    // 一、获取值栈对象的2种方式
    private void getVs() {
        // 获取值栈对象,方式1:
        HttpServletRequest request = ServletActionContext.getRequest();
        ValueStack vs1 = (ValueStack) request.getAttribute("struts.valueStack");
        
        // 获取值栈对象,方式2: 
        ActionContext ac = ActionContext.getContext();
        ValueStack vs2 = ac.getValueStack();
        
        System.out.println(vs1 == vs2);//true
    }
    
    
    
}

 

posted on 2015-11-03 19:40  想飞的程序员  阅读(381)  评论(0编辑  收藏  举报