Struts2 使用OGNL表达式

使用之前,需要使用到包分别是: javassist-3.11.0.GA.jar 和 ognl-3.0.6.jar

如图:

 

Cat 实体类

package entity;

/**
 * Cat 实体类
 * */
public class Cat {
	private int id;//编号
	private int age;//年龄
	private String name;//姓名
	private String color;//颜色
	
	public void catSay(){
		System.out.println("这是一只猫在叫的方法");
	}
	/*
	 * 构造方法
	 * */
	public Cat() {
	}
	public Cat(int id, int age, String name, String color) {
		this.id = id;
		this.age = age;
		this.name = name;
		this.color = color;
	}
	/*
	 * 封装方法
	 * */
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
}

 

Dog 实体类

package entity;

import java.util.ArrayList;
import java.util.List;

/**
 * Dog 实体类
 * */
public class Dog {
	private int id;//编号
	private int age;//年龄
	private String name;//姓名
	private String color;//颜色
	private List<Cat> cats=new ArrayList<Cat>();
	public void dogSay(){
		System.out.println("这是一只狗在叫的方法");
	}
	/*
	 * 构造方法
	 * */
	public Dog() {
	}
	public Dog(int id, int age, String name, String color) {
		this.id = id;
		this.age = age;
		this.name = name;
		this.color = color;
	}
	/*
	 * 封装方法
	 * */
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	public List<Cat> getCats() {
		return cats;
	}
	public void setCats(List<Cat> cats) {
		this.cats = cats;
	}
}

 

使用OGNL表达式

package test;

import java.util.ArrayList;
import java.util.List;

import ognl.Ognl;
import ognl.OgnlContext;
import ognl.OgnlException;
import entity.Cat;
import entity.Dog;
/*
 * 使用OGNL表达式
 * */
public class Test {
	private static OgnlContext ognlContext = new OgnlContext();//OGNL上下文
	private static Object root= new Object();//根对象,只做点位符使用
	public static void main(String[] args) throws OgnlException  {
		/*
		 * 创建对象传参,为下面的操作准备
		 * */
		Cat cat1 = new Cat(1, 3, "一猫", "绿色");
		Cat cat2 = new Cat(2, 4, "二猫", "蓝色");
		Dog dog1 = new Dog(1, 5, " 一狗", "红色");
		Dog dog2 = new Dog(2, 6, "二狗", "青色");

		dog1.getCats().add(cat1);
		dog1.getCats().add(cat2);

		/*
		 * 所有对象都放入 OgnlContext (其实就是一个Map)上,接下来的代码会用到
		 * */
		ognlContext.put("cat1", cat1);
		ognlContext.put("cat2", cat2);
		ognlContext.put("dog1", dog1);
		ognlContext.put("dog2", dog2);

		List<Object> annimals=new ArrayList<Object>();
		annimals.add(dog1);
		annimals.add(dog2);
		annimals.add(cat1);
		ognlContext.put("annimals", annimals);

		ognlContext.setRoot(cat1);

		//输出cat1的信息
		printDog1();
		//输出通过 List 形式找到具体的信息
		printList();
		//输出 Integer 类的二进制
		printToBinaryString();
		//输出一个数组的其中一个
		printArray();
		//输出根据Key找到值
		printKey();
		//输出通过 List 形式找到具体的信息
		printList2();
		//使用三元运算符
		printOther();
	}
	private static void printDog1() throws OgnlException  {
		root=Ognl.getValue("#dog1.id", ognlContext,ognlContext.getRoot());
		System.out.println("dog1.id="+root);
		root=Ognl.getValue("#dog1.age", ognlContext,ognlContext.getRoot());
		System.out.println("dog1.age="+root);
		root=Ognl.getValue("#dog1.name", ognlContext,ognlContext.getRoot());
		System.out.println("dog1.name="+root);
		root=Ognl.getValue("#dog1.color", ognlContext,ognlContext.getRoot());
		System.out.println("dog1.color="+root);
		System.out.println("-----------------------");
	}
	private static void printList() throws OgnlException {
		root=Ognl.getValue("#dog1.cats[0].color", ognlContext,ognlContext.getRoot());
		System.out.println("cats[0].color="+root);
		root=Ognl.getValue("#dog1.cats[1].name", ognlContext,ognlContext.getRoot());
		System.out.println("cats[1].name="+root);
		System.out.println("-----------------------");
	}
	private static void printToBinaryString()  throws OgnlException{
		System.out.println(Integer.toBinaryString(10));
		root =Ognl.getValue("@java.lang.Integer@toBinaryString(10)", ognlContext,ognlContext.getRoot());
		System.out.println(root);
		System.out.println("-----------------------");
	}
	private static void printArray()  throws OgnlException{
		root=Ognl.getValue("{'aaa','bbb','ccc'}[2]", ognlContext, ognlContext.getRoot());
		System.out.println(root);
		System.out.println("-----------------------");
	}
	private static void printKey()  throws OgnlException{
		root=Ognl.getValue("#{ 'aaa' : 'aaa value', 'bbb' : 'bbb value' }['aaa']", ognlContext, ognlContext.getRoot());
		System.out.println(root);
		System.out.println("-----------------------");
	}
	private static void printList2() throws OgnlException {
		root=Ognl.getValue("#dog1.cats.{age}", ognlContext, ognlContext.getRoot());
		System.out.println(root);
		System.out.println("-----------------------");
	}
	private static void printOther() throws OgnlException  {
		System.out.println(Ognl.getValue("#dog1.cats.{#this.name.length()<3 ?'Hello World':#this.name}", ognlContext, ognlContext.getRoot()));
	}
}

 

效果图:

 
 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值