zoukankan      html  css  js  c++  java
  • struts2 ognl存放数据

    ongl存放数据可以存放在对象栈(root),也可以存放在map中

    一、存放在map中

      1.存放在map中可以分为存放在request、session、application

    	public String testPutDataToValueStack(){
    		/*
    		 * 1.往request,session,application域中存放数据
    		 * 2.观察内存结构
    		 */
    		ServletActionContext.getRequest().setAttribute("request_username", "username");
    		ActionContext.getContext().getSession().put("session_username", "username");
    		ServletActionContext.getServletContext().setAttribute("application_username","username");
    		
    		ValueStack valueStack = ActionContext.getContext().getValueStack();
    		Object object = valueStack.getContext().get("request");
    		System.out.println(object);
    		return SUCCESS;
    	}
    

      

    存放到request、session、application后valuestack的map中的内存结构

      2.存放在map中的其他Entry中

    	public String testStringToMap(){
    		ActionContext.getContext().put("msg", "msg");
    		ValueStack valueStack = ActionContext.getContext().getValueStack();
    		Object object = valueStack.getContext().get("msg");
    		System.out.println(object);
    		return SUCCESS;
    	}
    

      

    二、存放在对象栈中(root)

      1.使用add方法存放

    	public String testObjectToRoot(){
    		Person person=new Person();
    		person.setName("cally");
    		CompoundRoot root = ActionContext.getContext().getValueStack().getRoot();
    		root.add(person);
    		//还一个指定存放位置,放0表示存放在栈顶
    		root.add(0, new Person());
    		
    		//放入对象以后,加入的对象在root中的最后一个,原来有两个,因为root继承了ArrayList,所以就具有List中的属性
    		Object object = root.get(2);
    		System.out.println(((Person)object).getName()+"--"+root.size());
    		return SUCCESS;
    	}
    

      

       2.使用set方法存放

    	public String testObjectToRoot2(){
    		ValueStack valueStack = ActionContext.getContext().getValueStack();
    		CompoundRoot root = valueStack.getRoot();
    		root.set(0, new Person());
    		return SUCCESS;
    	}
    

      

      3.使用push方法进行存放

    	public String testObjectToRoot3(){
    		ValueStack valueStack = ActionContext.getContext().getValueStack();
    		CompoundRoot root = valueStack.getRoot();
    		root.push(new Person());//调用push方法,把对象压入到对象栈顶
    		return SUCCESS;
    	}
    

      

    总结:

    1、可以利用reqeust,session,application把一个数据放入到ValueStack的map中

    2、可以利用ActionContext.getContext().put方法把一个数据放入到map中

    3、可以利用ValueStack.getRoot().add(object)方法把一个对象放入到对象栈中(栈底)

    4、可以利用ValueStack.getRoot().add(index,object)可以把一个对象放入到对象栈中 (index)指定位置

    5、可以利用valueStack的set方法把对象放入到栈顶,放入到栈顶的是一个HashMap

    6、可以利用valueStack的push方法把一个对象放入到对象栈的栈顶

  • 相关阅读:
    HTML超链接a标签
    ANR与Crash
    学习笔记:oracle学习一:oracle11g体系结构之物理存储结构
    学习笔记:oracle学习一:oracle11g体系结构之服务器结构、数据字典
    关于sql server全文检索的一些资料收集2
    关于sql server全文检索的一些资料收集1
    关于sql server全文检索的一些资料收集2
    做日文编码网页解决乱码的经验。(仇日派别砍我~~)
    如何监视sql server连接池
    做全文检索的小心得
  • 原文地址:https://www.cnblogs.com/callyblog/p/7531492.html
Copyright © 2011-2022 走看看