Java执⾏JavaScript代码:传参、获取变量、返回值、JSON对象
脚本包
Java 脚本功能是在 javax.script 包中。这是⼀个⽐较⼩的,简单的API。脚本的出发点是 ScriptEngineManager
类,ScriptEngineManager是⼀个⼯⼚集合,可以通过name或tag的⽅式获取某个脚本的⼯⼚并⽣成⼀个此脚本的ScriptEngine,⽬前只有javascript的⼯⼚。通过⼯⼚函数得到了ScriptEngine之后,就可以⽤这个对象来解析脚本字符串了,直接调⽤Object obj = ScriptEngine.eval(String script)即可,返回的obj为表达式的值,⽐如true、false或int值。使⽤脚本编程接⼝最简单的⽅法如下:
1.创建⼀个 ScriptEngineManager 对象
2.从 ScriptEngineManager 获取 ScriptEngine 对象
3.使⽤ ScriptEngine的eval⽅法执⾏脚本
现在,是时候看⼀些样本代码了。了解⼀些JavaScript有助于阅读这些例⼦,但不是强制的。
⽰例⼀:执⾏JavaScript代码,传参并获取返回值
//获取ScriptEngineManager对象
ScriptEngineManager manager =new ScriptEngineManager();
//获取JavaScript执⾏引擎
js脚本编程入门ScriptEngine engine = EngineByName("js");
//⽅式⼀
String script ="function hello(name){"+
" return 'Hello '+name; "+
"}";
engine.eval(script);
// 注意:JavaScript engine 实现了 Invocable 接⼝
Invocable inv =(Invocable)engine;
/
/ 执⾏这个名字为 "hello"的全局的函数
Object eval = inv.invokeFunction("hello","张三枫");
System.out.println(eval);
//⽅式⼆
script ="'Hello '+name";//JS可执⾏的表达式
//传⼊参数
engine.put("name","张三枫");
//执⾏获取结果
eval = engine.eval(script);
System.out.println(eval);
⽰例⼆:执⾏JavaScript代码,获取其中的变量
ScriptEngineManager manager =new ScriptEngineManager();
ScriptEngine engine = EngineByName("js");
String script ="var name='豹⼦头零充'; var age = 18; var sex ='男'";
engine.eval(script);
Object name= ("name");
System.out.println(name);
⽰例三:执⾏JavaScript代码,获取对象、数组
ScriptEngineManager manager =new ScriptEngineManager();
ScriptEngine engine = EngineByName("js");
String script ="var obj={};"+
"obj.name='豹⼦头零充';"+
"obj.age = 18;"+
"obj.sex ='男';"+
"var array=['A','B','C'];";
engine.eval(script);
//获取js变量obj(json类型)
ScriptObjectMirror obj =(("obj");
//获取JSON对象的name值
System.out.("name"));
//获取js变量array(数组)
ScriptObjectMirror array=(ScriptObjectMirror) ("array");
//getSlot(int index)函数⽤于获取下标为index的值
System.out.Slot(0));
不得不说,ScriptEngine是个很强⼤的引擎,可以解析JS脚本,或者以JS的规则解析表达式。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论