zoukankan      html  css  js  c++  java
  • 4、Ognl实验

      1 package test;
      2 
      3 import java.util.ArrayList;
      4 import java.util.HashMap;
      5 
      6 import org.junit.Test;
      7 
      8 import ognl.Ognl;
      9 import ognl.OgnlException;
     10 import tcx.model.Department;
     11 import tcx.model.Role;
     12 import tcx.model.User;
     13 
     14 public class testOgnl {
     15 
     16     @Test
     17     public void test() {
     18         try {
     19             User u = new User("1", "naruto", "鸣人");
     20             Department dep = new Department("火之国");
     21             u.setDep(dep);
     22             User u2 = new User("2", "sasuke", "佐助", dep);
     23             User u3 = new User("3", "Itachi", "鼬", dep);
     24 
     25             System.out.println(Ognl.getValue("id", u));
     26             System.out.println(Ognl.getValue("username", u));
     27             System.out.println(Ognl.getValue("nickname", u));
     28             System.out.println(Ognl.getValue("dep.name", u));
     29             System.out.println(">>>>>>------------------------------>>>>>>>>>");
     30 
     31             ArrayList<User> users = new ArrayList<>();
     32             users.add(u);
     33             users.add(u2);
     34             users.add(u3);
     35             for (User k : users) {
     36                 System.out.println(k.getId());
     37                 System.out.println(k.getUsername());
     38                 System.out.println(k.getNickname());
     39                 System.out.println(k.getDep().getName());
     40                 System.out.println("------------------------------>>>>>>>>>");
     41             }
     42         } catch (OgnlException e) {
     43             e.printStackTrace();
     44         }
     45     }
     46 
     47     @Test
     48     public void test1() {
     49         try {
     50             User u = new User("1", "naruto", "鸣人");
     51             Department dep = new Department("火之国");
     52             u.setDep(dep);
     53             User u2 = new User("2", "sasuke", "佐助", dep);
     54             User u3 = new User("3", "Itachi", "鼬", dep);
     55             Role role = new Role("1", "wukong", "孙悟空");
     56             HashMap<String, Object> context = new HashMap<String, Object>();
     57             context.put("u", u);
     58             context.put("u2", u2);
     59             context.put("u3", u3);
     60             context.put("role", role);
     61             // 以下表达式是在root中找,u是root。
     62             System.out.println(Ognl.getValue("id", context, u));
     63             System.out.println(Ognl.getValue("username", context, u));
     64             System.out.println(Ognl.getValue("nickname", context, u));
     65             System.out.println(Ognl.getValue("dep.name", context, u));
     66             // 以下表达式是在context这个map中查找,和root无关,root是u。
     67             System.out.println(Ognl.getValue("#role.username", context, u));
     68             // root为context不加#可以取到值。
     69             System.out.println(Ognl.getValue("role.username", context, context));
     70             // Ognl是一个大的Context,根的key是root,所以可以通过#root.xx取值
     71             System.out.println(Ognl.getValue("#root.username", context, role));
     72 
     73         } catch (Exception e) {
     74             e.printStackTrace();
     75         }
     76     }
     77 
     78     @Test
     79     public void test2() {
     80         try {
     81             User u = new User("1", "naruto", "鸣人");
     82             Department dep = new Department("火之国");
     83             u.setDep(dep);
     84             User u2 = new User("2", "sasuke", "佐助", dep);
     85             User u3 = new User("3", "Itachi", "鼬", dep);
     86             ArrayList<User> users = new ArrayList<>();
     87 
     88             users.add(u);
     89             users.add(u2);
     90             users.add(u3);
     91             // 取list中的元素,通过#root[index].xx。
     92             System.out.println(Ognl.getValue("#root[0].id", users));
     93             System.out.println(Ognl.getValue("#root[0].username", users));
     94             System.out.println(Ognl.getValue("#root[0].dep.name", users));
     95             System.out.println(Ognl.getValue("#root[1].id", users));
     96             System.out.println(Ognl.getValue("#root[1].username", users));
     97             System.out.println(Ognl.getValue("#root[1].dep.name", users));
     98             System.out.println(Ognl.getValue("#root[2].id", users));
     99             System.out.println(Ognl.getValue("#root[2].username", users));
    100             System.out.println(Ognl.getValue("#root[2].dep.name", users));
    101 
    102         } catch (Exception e) {
    103             e.printStackTrace();
    104         }
    105     }
    106 
    107     @Test
    108     public void test3() {
    109         try {
    110             User u = new User("1", "naruto", "鸣人");
    111             Department dep = new Department("火之国");
    112             u.setDep(dep);
    113             User u2 = new User("2", "sasuke", "佐助", dep);
    114             User u3 = new User("3", "Itachi", "鼬", dep);
    115             ArrayList<User> users = new ArrayList<>();
    116 
    117             users.add(u);
    118             users.add(u2);
    119             users.add(u3);
    120             // ognl完成方法的调用。
    121             System.out.println(Ognl.getValue("#root[0].sum(1,100)", users));
    122             System.out.println(Ognl.getValue("#root[1].hello(123)", users));
    123             System.out.println(Ognl.getValue("hello('困')", u));
    124             // 可以通过调用list中的get()方法获取某个下标的对象,然后完成导航。
    125             System.out.println(Ognl.getValue("get(0).username", users));
    126         } catch (OgnlException e) {
    127             e.printStackTrace();
    128         }
    129     }
    130 
    131 }

    用到的类User,Role,Department

     1 package tcx.model;
     2 
     3 public class User {
     4     private String id;
     5     private String username;
     6     private String nickname;
     7     private Department dep;
     8     public String getId() {
     9         return id;
    10     }
    11     public void setId(String id) {
    12         this.id = id;
    13     }
    14     public String getUsername() {
    15         return username;
    16     }
    17     public void setUsername(String username) {
    18         this.username = username;
    19     }
    20     public String getNickname() {
    21         return nickname;
    22     }
    23     public void setNickname(String nickname) {
    24         this.nickname = nickname;
    25     }
    26     public Department getDep() {
    27         return dep;
    28     }
    29     public void setDep(Department dep) {
    30         this.dep = dep;
    31     }
    32     public User(String id, String username, String nickname) {
    33         super();
    34         this.id = id;
    35         this.username = username;
    36         this.nickname = nickname;
    37     }
    38     
    39     public User(String id, String username, String nickname, Department dep) {
    40         super();
    41         this.id = id;
    42         this.username = username;
    43         this.nickname = nickname;
    44         this.dep = dep;
    45     }
    46     @Override
    47     public String toString() {
    48         return "User [id=" + id + ", username=" + username + ", nickname=" + nickname + "]";
    49     }
    50     public int sum(int a,int b) {
    51         return a+b;
    52     }
    53     public String hello(String h) {
    54         return h+"中国dota乙烷";
    55     }
    56     
    57 }
     1 package tcx.model;
     2 
     3 public class Department {
     4     private String name;
     5 
     6     public String getName() {
     7         return name;
     8     }
     9 
    10     public void setName(String name) {
    11         this.name = name;
    12     }
    13 
    14     public Department(String name) {
    15         super();
    16         this.name = name;
    17     }
    18     
    19     
    20 }
     1 package tcx.model;
     2 
     3 public class Role {
     4     private String id;
     5     private String username;
     6     private String nickname;
     7 
     8     public String getId() {
     9         return id;
    10     }
    11 
    12     public void setId(String id) {
    13         this.id = id;
    14     }
    15 
    16     public String getUsername() {
    17         return username;
    18     }
    19 
    20     public void setUsername(String username) {
    21         this.username = username;
    22     }
    23 
    24     public String getNickname() {
    25         return nickname;
    26     }
    27 
    28     public void setNickname(String nickname) {
    29         this.nickname = nickname;
    30     }
    31 
    32     public Role(String id, String username, String nickname) {
    33         super();
    34         this.id = id;
    35         this.username = username;
    36         this.nickname = nickname;
    37     }
    38     
    39 }

     从根下取值不需要加#号

    从context下取值需要加#号

    根的结构

    u

    --id

    --username

    --nickname

    --dep

      --name

    context结构

    context

    --u

    --u1

    --u2

    --u3

  • 相关阅读:
    idapython常用api记录7.0
    Ubuntu(16.0.4)上编译android8.1源码(资料最全版本)
    Frida常用方法
    Frida Java Hook 详解(安卓9):代码及示例(下)
    Frida Java Hook 详解(安卓9):代码及示例(上)
    windows命令行工具导出系统日志——wevtutil
    帆软 V9 Getshell
    和信创天云桌面命令执行
    天擎越权访问
    天擎-前台SQL注入
  • 原文地址:https://www.cnblogs.com/Akke/p/4985231.html
Copyright © 2011-2022 走看看