• Ognl


    package cn.lyjs.ognl;
    
    import org.junit.Test;
    
    import ognl.Ognl;
    import ognl.OgnlContext;
    import ognl.OgnlException;
    
    public class OgnlDemo1 {
        /**
         * Ognl表达式语言取值,取非根元素必须使用#,
         * 如果取根元素的值,不需要带#号
         * @throws OgnlException
         */
        @Test
        public void testOgnl() throws OgnlException {
            //创建一个Ognl上下文对象
            OgnlContext context=new OgnlContext();
            //放入数据
            User user=new User();
            user.setId(20);
            user.setName("Tom");
            context.put("user", user);
            //获取数据
            //先构建一个Ognl表达式,在解析表达式
            Object ognl=Ognl.parseExpression("#user.id");
            Object value=Ognl.getValue(ognl, context, context.getRoot());
            
            System.out.println(value);
        }
        
        
        @Test
        public void testOgn2() throws OgnlException {
            //创建一个Ognl上下文对象
            OgnlContext context=new OgnlContext();
            //放入数据
            User user=new User();
            user.setId(20);
            user.setName("Tom");
            context.setRoot(user);
            //获取数据
            //先构建一个Ognl表达式,在解析表达式
            Object ognl=Ognl.parseExpression("id");
            Object value=Ognl.getValue(ognl, context, context.getRoot());
            
            System.out.println(value);
        }
        /**
         * Ognl对静态方法调用的支持
         * @throws OgnlException
         */
        
        @Test
        public void testOgnl3() throws OgnlException {
            //创建一个Ognl上下文对象
            OgnlContext context=new OgnlContext();
            //Ognl表达式语言,代用类的静态方法
            //Object ognl=Ognl.parseExpression("@Math@floor(10.9)");
            //由于Math类在开发中比较常用所以也可以这样写
            
            Object ognl=Ognl.parseExpression("@@floor(10.9)");
            Object value=Ognl.getValue(ognl, context, context.getRoot());
            System.out.println(value);
        }
    }
    package cn.lyjs.ognl;
    
    import static org.junit.Assert.*;
    
    import javax.servlet.http.HttpServletRequest;
    
    import org.apache.struts2.ServletActionContext;
    import org.junit.Test;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.util.ValueStack;
    
    public class OgnlDemo2 extends ActionSupport{
        @Override
        public String execute() throws Exception {
            gets();
            return SUCCESS;
        }
    
        private void gets() {
            //获取值栈对象
            HttpServletRequest request = ServletActionContext.getRequest();
            ValueStack vs2 = (ValueStack) request.getAttribute("struts.valueStack");
            //获取值栈对象
            ActionContext ac=ActionContext.getContext();
            ValueStack valueStack = ac.getValueStack();
        }
    }
  • 相关阅读:
    《java异常的一些总结》
    《java小应用程序(Applet)和java应用程序(Application)分别编写的简单计算器》
    《Java应用程序(Application)》
    CPU 内部 MOSFET 晶体管模型
    Intel 4004,世界上第一块 CPU
    VBScript
    VBScript
    Web Scraping(网页抓取)基本原理
    VBScript
    莎士比亚电路ヾ(≧▽≦*)o
  • 原文地址:https://www.cnblogs.com/lyjs/p/5094887.html
Copyright © 2020-2023  润新知