java ognl jar_Ognl基本使用

// 参数1,填写Ognl表达式

// 参数2,Map类=》context上下文

// 参数3,JavaBean,Map,List````等类型,Root 根

Ognl需要的jar包:

fbfb40d89f0518f9863124df26f892c2.png

先准备两个JavaBean

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

public classUser {privateString name;private intage;privateAddress address;publicAddress getAddress() {returnaddress;

}public voidsetAddress(Address address) {this.address =address;

}publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}public intgetAge() {returnage;

}public void setAge(intage) {this.age =age;

}

}

User

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

public classAddress {privateString city;publicString getCity() {returncity;

}public voidsetCity(String city) {this.city =city;

}

}

Address

下面列举Demo,方法中使用Ognl

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

public void func1() throwsOgnlException {

User user= newUser();

user.setName("Tom");

String name= (String) Ognl.getValue("name", newHashMap(), user);

System.out.println(name);

}

从JavaBean根中取数据

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

//从List根中取数据

public void func2() throwsOgnlException {

List list=new ArrayList();

User user= newUser();

user.setName("Tom");

list.add(user);

User user2=newUser();

user2.setName("Jerry");

list.add(user2);//[1]代表list中第二个数据

String name = (String) Ognl.getValue("[1].name", newHashMap(), list);

System.out.println(name);

}

从List根中取数据

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

//稍复杂的从JavaBean中取数据

public void func4() throwsOgnlException{

User user=newUser();

Address address=newAddress();

address.setCity("北京");

user.setAddress(address);

String city=(String) Ognl.getValue("address.city", newHashMap(),user);

System.out.println(city);

}

稍复杂的从JavaBean中取数据

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

//从第二个参数Map中取数据

public void func3() throwsOgnlException{

Map context=new HashMap();

context.put("name", "Tom");//为了验证确实是取自Map中,添加一个JavaBean

User user=newUser();

user.setName("Jerry");//如果取自Map,则需要在name前加#,否则默认取自第三个JavaBean中

String name = (String) Ognl.getValue("#name",context, user);

System.out.println(name);

}

从第二个参数Map中取数据

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

//用Ognl表达式用getValue方法给对象赋值

public void func5() throwsOgnlException {

User user= newUser();

Integer age= (Integer) Ognl.getValue("age=23", newHashMap(), user);

System.out.println(user.getAge());

System.out.println(age);

}

用Ognl表达式用getValue方法给对象赋值

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

//用Ognl表达式用setValue方法给对象赋值

public void func6() throwsOgnlException {

User user= newUser();

Ognl.setValue("age", new HashMap(), user,23);

System.out.println(user.getAge());

}

用Ognl表达式用setValue方法给对象赋值

在User类中新增一个非静态方法和一个静态方法

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

public staticString getNowTime1(){return new SimpleDateFormat("yyyy/MM/dd").format(newDate());

}publicString getNowTime2(){return new SimpleDateFormat("yyyy-MM-dd").format(newDate());

}

User新增方法

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

//调用根中方法

public void func7() throwsOgnlException {//静态方法和普通方法调用方式一样

User user = newUser();

String nowTime1= (String) Ognl.getValue("getNowTime1()", new HashMap<>(), user);

String nowTime2= (String) Ognl.getValue("getNowTime2()", new HashMap<>(), user);

System.out.println(nowTime1);

System.out.println(nowTime2);

}

调用根中方法

为了测试调用其他类中方法,新增一个类

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

importjava.text.SimpleDateFormat;importjava.util.Date;public classDateUtils {public staticString getNowTime1(String format) {return new SimpleDateFormat(format).format(newDate());

}publicString getNowTime2(String format) {return new SimpleDateFormat(format).format(newDate());

}

}

获取时间

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

//调用其他类静态方法并传参数

public void func8() throwsOgnlException {//使用@符号调用其他类中静态方法,不再受必须在根中的限制

User user = newUser();

String nowTime= (String) Ognl.getValue("@cn.hjp.utils.DateUtils@getNowTime1('yyyy-MM/dd')", new HashMap<>(),

user);

System.out.println(nowTime);

}

调用其他类静态方法并传参数

在DateUtils类中新增一公共变量 public static Double d=12.34;进行下面测试

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

//调用其他类中静态变量

public void func9() throwsOgnlException{

User user=newUser();

Double d=(Double) Ognl.getValue("@cn.hjp.utils.DateUtils@d", new HashMap<>(),

user);

System.out.println(d);

}

调用其他类中静态变量

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

//进行运算

public void func10() throwsOgnlException{

User user=newUser();

Integer d=(Integer) Ognl.getValue("1+1", new HashMap<>(),

user);

System.out.println(d);

}

进行运算

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

//逗号“,”连接符的使用

public void func11() throwsOgnlException {

User user= newUser();//多表达式,逗号分隔,都参与运算,只是最后一个才会返回结果

String name = (String) Ognl.getValue("name='Tom',name", new HashMap<>(), user);

Integer age= (Integer) Ognl.getValue("name='Tom',age=23", new HashMap<>(), user);

System.out.println(name);

System.out.println(age);

}

逗号“,”连接符的使用

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

//创建List集合

public void func12() throwsOgnlException {

User user= newUser();

List list= (List) Ognl.getValue("{'Tom','Lily','Jerry','Jack'}", new HashMap<>(), user);

System.out.println(list);

}

创建List集合

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

//创建Map,要使用#符号,指定为Map类型

public void func13() throwsOgnlException {

User user= newUser();

Map map= (Map) Ognl.getValue("#{'name':'Tom','age':23}", new HashMap<>(), user);

System.out.println(map);

}

创建Map,要使用#符号,指定为Map类型

方便演示创建对象,重写User类的ToString方法:

public String toString() {

return "User [name=" + name + ", age=" + age + ", address=" + address + "]";

}

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

//使用Ognl创建对象

public void func14() throwsOgnlException {

User user1=newUser();

User user2= (User) Ognl.getValue("new cn.hjp.bean.User()",new HashMap<>(), user1);

System.out.println(user2);

}

使用Ognl创建对象

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

//Ognl中的in和 not in 运算符

public void func15() throwsOgnlException{

User user=newUser();

Boolean exists=(Boolean) Ognl.getValue("'Tom' in {'Tom','Lily','Jerry','Jack'}", new HashMap<>(),

user);

Boolean notexists=(Boolean) Ognl.getValue("'Tom' not in {'Tom','Lily','Jerry','Jack'}", new HashMap<>(),

user);

System.out.println(exists);

System.out.println(notexists);

}

Ognl中的in和 not in 运算符

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

//集合投影

public void func16() throwsOgnlException {

List list = new ArrayList();

User user1= newUser();

user1.setName("Tom");

user1.setAge(23);

list.add(user1);

User user2= newUser();

user2.setName("Jerry");

user2.setAge(24);

list.add(user2);//只获取name属性

List l = (List) Ognl.getValue("#this.{name}", new HashMap<>(), list);

System.out.println(l);

}

集合投影

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

//集合选择

public void func17() throwsOgnlException {

List list = new ArrayList();

User user1= newUser();

user1.setName("Tom");

user1.setAge(17);

list.add(user1);

User user2= newUser();

user2.setName("Jerry");

user2.setAge(24);

list.add(user2);//只获取name属性

List l = (List) Ognl.getValue("#this.{?age>18}", new HashMap<>(), list);

System.out.println(l);

}

集合选择

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值