mvs使用方法_mvr是什么意思

mvs使用方法_mvr是什么意思MVEL为MVFLEXExpressionLanguage(MVFLEX表达式语言)的缩写,它是一种动态/静态的可嵌入的表达式语言和为Java平台提供Runtime(运行时)的语言

mvs使用方法_mvr是什么意思"

MVEL为 MVFLEX Expression Language(MVFLEX表达式语言)的缩写,它是一种动态/静态的可嵌入的表达式语言和为Java平台提供Runtime(运行时)的语言。最初是作为一个应用程序框架实用程序的语言开始,该项目现已发展完全独立。MVEL通常用于执行用户(程序员)通过配置XML文件或注释等定义的基本逻辑。它也可以用来解析简单的JavaBean表达式。Runtime(运行时)允许MVEL表达式通过解释执行或者预编译生成字节码后执行。

MVEL是一个基于java语法的表达式,为JAVA语言提供便捷灵活的动态性。MVEL吸收了大量的java语法,但是作为一个表达式语言,还是与java有很多不同之处,比如MVEL像正则表达式一样,有直接支持集合、数组、字符串的操作符。

     除了表达式语言以外,MVEL还提供了用来配置和构造字符串的模板语言。

     MVEL表达式主要有以下部分内容:

  •      属性表达式
  •      布尔表达式
  •      方法调用
  •      变量赋值
  •      函数定义

      下面介绍下如何使用MVEL。

示例一、比较相等、获取值和计算

MVEL可以用==判断相等,如foo.name == “Mr.Foo”.其中foo可以为上下文对象也可以是外部变量.具体示例代码如下:Person.java

Person.java类

public class Person {   
  
    private String name;   
  
    public void setName(String name) {   
        this.name = name;   
    }   
  
    public String getName() {   
        return this.name;   
    }   
      
} 

SimpleTester.java类

package org.ndot.mvel.MvelTester.example1;   
  
import java.util.HashMap;   
import java.util.Map;   
  
import org.mvel2.MVEL;   
import org.mvel2.compiler.ExecutableAccessor;   
  
/**  
 *   
 */  
public class SimpleTester {   
  
    public static void main(String[] args) {   
  
        Person personInst = new Person();   
        personInst.setName("Mr.Foo");   
  
        // 判断相等  
        Object objResult = MVEL.eval("name == 'Mr.Foo'", personInst);   
        System.out.println("objResult=" + objResult);   
  
        // 取值   
        String strResult = (String) MVEL.eval("name", personInst);   
        System.out.println("strResult=" + strResult);   
  
        // 计算   
        Map vars = new HashMap();   
        vars.put("x", new Integer(5));   
        vars.put("y", new Integer(10));   
  
        // 第一种方式  
        Integer intResult = (Integer) MVEL.eval("x * y", vars);   
        System.out.println("intResult=" + intResult);   
        // 第二种方式  
        ExecutableAccessor compiled = (ExecutableAccessor) MVEL.compileExpression("x * y");   
        intResult = (Integer) MVEL.executeExpression(compiled, vars);   
        System.out.println("intResult=" + intResult);   
  
    }   
}   
打印结果:   
objResult=true  
strResult=Mr.Foo   
intResult=50  
intResult=50  

示例二、MVEL.eval()

public class MVELTest {
	public static void main(String[] args) {
		String expression = "foobar > 99";
 
		Map vars = new HashMap();
		vars.put("foobar", new Integer(100));
 
		// We know this expression should return a boolean.
		Boolean result = (Boolean) MVEL.eval(expression, vars);
 
		if (result.booleanValue()) {
			System.out.println("It works!");
		}
	}

区别比较:Java 中计算字符串表达式的值

在 Java 中计算字符串数值表达式可以用 javax.script.ScriptEngine#eval(java.lang.String),通过调用 JavaScript 来计算

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class ExpressionCalculate {
    public static void main(String[] args) {
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("nashorn");
        String expression = "10 * 2 + 6 / (3 - 1)";

        try {
            String result = String.valueOf(scriptEngine.eval(expression));
            System.out.println(result);
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }
}

 

今天的文章mvs使用方法_mvr是什么意思分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/69134.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注