这篇文章主要介绍了Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)执行绝妙的脚本的两种方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
记录Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)执行绝妙的脚本的两种方式,简单粗暴:
一种是通过脚本引擎脚本引擎提供的评估(字符串)方法执行脚本内容;一种是执行绝妙的脚本;
二者都通过可调用来传递参数并获取执行结果;
可调用:脚本引擎的解释器接口,提供引起函数和引起方法两种传递参数并获取执行结果的方法,Java JDK API文档解释如下:
调用功能:
引起方法:
以下为案例:
引入依赖
属国
groupIdorg.codehaus.groovy/groupId
artifact id groovy-all/artifact id
版本1 .2 .74/版本
/依赖关系
定义脚本内容并执行
public void testByFunction(){
//初始化粘合剂
绑定绑定=引擎。创建绑定();
//绑定参数
bindings.put('date ',new Date());
最终字符串名称='太棒了
//定义绝妙的脚本中执行方法的名称
最终字符串scriptName='执行
//定义绝妙的脚本内容
最终字符串脚本内容=' def '脚本名称'(名称){ '
println('现在日期时间是:$ {日期。gettime()} ');'
println('我的名字是$ name’);'
返回日期。gettime()0;'
'}';
尝试{
//执行脚本
engine.eval(scriptContent,bindings);
//获取执行结果
可调用的可调用的=(可调用的)引擎;
布尔标志=(布尔)可调用。调用函数(脚本名,名称);
系统。出去。println('-');
System.out.println('结果为:‘flag’);
} catch(脚本异常| NoSuchMethodException e){
e。printstacktrace();
}
}
运行结果:
引起函数方法的第一个参数为脚本的函数名称,把脚本名拎出来通过创建线对象再赋值进去,方便你看懂函数名称到底是哪个;
脚本内容中${date.getTime()}与$name的意思一样,grovvy中的字符串可以识别${}和$占位符;
粘合剂绑定参数与引起函数方法的第二个参数的区别是,前者是脚本内全局的,而后者是定义在函数内的;
例如把脚本内容定义为这样:
执行结果就是这样了:
实例化脚本对象并执行
public void testByMethod(){
尝试{
//初始化绝妙的脚本对象
final TestGroovy TestGroovy=new TestGroovy();
//定义绝妙的脚本中执行方法的名称
最终字符串scriptName='执行
//定义参数
最终日期arg_1=新日期();
最终字符串arg _ 2=' groovy
//执行脚本并获取结果
可调用的可调用的=(可调用的)引擎;
布尔标志=(布尔)可调用。invoke方法(测试groovy,scriptName,arg_1,arg _ 2);
系统。出去。println('-');
System.out.println('结果为:‘flag’);
} catch(脚本异常| NoSuchMethodException e){
e。printstacktrace();
}
}
TestGroovy.groovy脚本内容:
包com .蒲公英. groovy
类TestGroovy {
静态定义执行(日期日期,字符串名称){
println('now日期时间为:$ {日期。gettime()} ');
println('我的名字是$ name’);
返回日期。gettime()0;
}
}
运行结果:
引起方法方法的第一个参数是脚本对象,第二个参数是脚本中的函数名称,之后为绑定的参数;
源码:
包com。蒲公英。测试;
导入com。蒲公英。太棒了。测试groovy
导入javax。剧本。*;
导入Java。util。日期;
/**
*================================
* 测试绝妙的脚本的执行方式
* @作者他
* @日期2021-04-21
* @Time 01:12
*================================
*/
公共类TestScriptEngine {
//查找并创建指定脚本引擎
私有脚本引擎engine=新脚本引擎管理器().getEngineByName(' groovy ');
public void testByFunction(){
//初始化粘合剂
绑定绑定=引擎。创建绑定();
//绑定参数
bindings.put('date ',new Date());
//定义绝妙的脚本中执行方法的名称
最终字符串scriptName='执行
//定义绝妙的脚本内容
最终字符串脚本内容=' def '脚本名称'(){ '
println('现在日期时间是:$ {日期。gettime()} ');'
返回日期。gettime()0;'
'}';
尝试{
//执行脚本
engine.eval(scriptContent,bindings);
//获取执行结果
可调用的可调用的=(可调用的)引擎;
布尔标志=(布尔)可调用。调用函数(脚本名);
系统。出去。println('-');
System.out.println('结果为:‘flag’);
} catch(脚本异常| NoSuchMethodException e){
e。printstacktrace();
}
}
public void testByMethod(){
尝试{
//初始化绝妙的脚本对象
final TestGroovy TestGroovy=new TestGroovy();
//定义绝妙的脚本中执行方法的名称
最终字符串scriptName='执行
//定义参数
最终日期arg_1=新日期();
最终字符串arg _ 2=' groovy
//执行脚本并获取结果
可调用的可调用的=(可调用的)引擎;
布尔标志=(布尔)可调用。invoke方法(测试groovy,scriptName,arg_1,arg _ 2);
系统。出去。println('-');
System.out.println('结果为:‘flag’);
} catch(脚本异常| NoSuchMethodException e){
e。printstacktrace();
}
}
公共静态void main(String[] args) {
test script engine engine=new test script engine();
引擎。testby函数();
}
}
到此这篇关于Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)执行绝妙的脚本的两种方式的文章就介绍到这了,更多相关Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)执行绝妙的脚本内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。