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