java脚本引擎使java应用程序,可以通过一套固定的接口与各种脚本语言交互,从而达到在java平台上调用各种脚本语言的目的。它是一个可以执行用特定语言随便写的脚本的类库,当虚拟机启动时,它会发现可用的脚本引擎,为了枚举这些引擎,需要构建一个ScriptEngineManager,并调用getEngineFactories()方法。可以向每个引擎工厂询问它们所支持的引擎名,MIME类型和文件扩展名。
通常可以直接通过名字,MIME类型,文件扩展获取脚本引擎。下面贴代码:
package myScriptEngine;
import java.io.IOException;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class MyScriptEngine {
public static void main(String[] args) throws ScriptException, IOException, NoSuchMethodException {
//获得脚本引擎对象
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine engine = sem.getEngineByName("javascript");
//定义变量,存储到引擎上下文中
engine.put("lwk", "anyang");
String str = "var user = {name:'lwk',age:20,schools:'hhxy'};";
//执行脚本
engine.eval(str);
System.out.println((engine.get("user")));
System.out.println(engine.get("lwk"));
engine.eval("lwk = 'henan';");
System.out.println(engine.get("lwk"));
//定义函数
engine.eval("function add(a,b){var sum = a + b; return sum;}");
//取得调用接口
Invocable jsInvoke = (Invocable) engine;
//执行脚本中定义的方法
Object result1 = jsInvoke.invokeFunction("add", new Object[]{13,20});
System.out.println(result1);
}
}