一.介绍
1.是jdk6.0以后的新增的功能
2.使得java程序通过一套固定的接口与各种脚本引擎交互,使可以在java平台可以调用各种脚本语言
3.把一些复杂异变的业务逻辑交给脚本语言去处理,提高效率
二.
@Test
public void test1() throws ScriptException, NoSuchMethodException, FileNotFoundException {
//获得脚本引擎对象
ScriptEngineManager manager=new ScriptEngineManager();
ScriptEngine engine=manager.getEngineByName("js");
//定义变量存储到引擎上下文,则该变量在java/js中都能获取
engine.put("value", 1);
engine.eval("value=2;"); //js代码改变value值
System.out.println(engine.get("value")); //java代码打印value值
//执行js代码
String s="var user= {name:'hwx', age:18};";
s+="print(user.name);";
engine.eval(s);
//定义js函数
engine.eval("function add(a,b){var sum=a+b;return sum;};");
//执行js函数
Invocable invoke=(Invocable)engine;
double x=(double)invoke.invokeFunction("add",1,2); //参数为函数名,Object可变参数
System.out.println(x);
//导入其他java包,使用其他包中Java类
s="importPackage(java.util); var list=Arrays.asList([1,2,3]);";
engine.eval(s);
List<Integer> list=(List<Integer>)engine.get("list");
System.out.println(list);
//执行一个js文件
URL url=demo1.class.getClassLoader().getResource("a.js");
FileReader reader=new FileReader(url.getPath());
engine.eval(reader);
}