• struts2---ValueStack对象


    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
        }
        
        
        
    }
  • 相关阅读:
    spring声明式事务
    spring的传播行为和隔离级别
    索引(index)
    存储过程(转)
    Java中ArrayList相关的5道面试题
    记CVTE2014年春季招聘实习生求职历程
    Java中String,StringBuffer,StringBuilder的区别及其使用
    Linux下C程序的编译,运行,及调试
    skynet源码分析之skynet_server
    skynet源码分析之skynet_module
  • 原文地址:https://www.cnblogs.com/edxiscoming/p/4934140.html
Copyright © 2020-2023  润新知