struts2 - 8 OGNL域root栈 的存取值演示

124 篇文章 1 订阅
96 篇文章 0 订阅

 

 

package test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.junit.Test;


import bean.User;
import ognl.Ognl;
import ognl.OgnlContext;
import ognl.OgnlException;

public class Demo {
	
	
	/*
	 * 	1. OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写
	 * 	所谓对象图,即以任意一个对象为根,通过OGNL可以访问与这个对象关联的其它对象
	 * 	通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。
	 *  它使用相同的表达式去存取对象的属性
		2. Struts2框架使用OGNL作为默认的表达式语言
		    * OGNL是一种比EL强大很多倍的语言
		    * xwork提供 OGNL表达式
		    * ognl-3.0.5.jar
		3. OGNL 提供五大类功能
		   * 支持对象方法调用
		   * 支持类静态的方法调用和值访问
		   * 访问OGNL上下文(OGNL context)和ActionContext
		   * 支持赋值操作和表达式串联
		   * 操作集合对象
	 */
	
	
	/**
	 * 简单的ognl域存取值演示
	 * 注意在取context域中值得时候getValue方法第一个参数要加上#号
	 * @throws OgnlException
	 */
	@Test
	public void demo2() throws OgnlException {
		OgnlContext context = new OgnlContext();
		context.put("arg1", "arg1Text");
		//getValue("#arg1", context, context.getRoot());该方法第一个参数需要加#号
		Object value = Ognl.getValue("#arg1", context, context.getRoot());
		System.out.println(value.toString());
	}
	
	/**
	 * 从root栈中存取数据
	 * 将对象存入root域中之后可以使用Ognl.getValue方法来直接获得对象的属性
	 * 第一个参数也不需要加上#号
	 * @throws OgnlException
	 */
	@Test
	public void demo3() throws OgnlException {
		OgnlContext context = new OgnlContext();
		User user = new User("alex1", "123456");
		context.setRoot(user);
		String username = (String) Ognl.getValue("username", context, context.getRoot());
		System.out.println(username);
	}
	
	
	
	
	
	
	
	
	
	/**
	 * 用arraylist模拟入栈
	 */
	@Test
	public void demo1() {
		List<String> list = new ArrayList<String>();
		list.add(0,"1");
		list.add(0,"2");
		list.add(0,"3");
		for (int i = 0; i < list.size(); i++) {
			System.out.println(i + ":" +list.get(i));
		}
	}
	

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值