java 脚本相关的api在javax.script中
- 直接执行js函数:
public static void main(String[] args) {
// 1.实例化 ScriptEngineManager
ScriptEngineManager manager = new ScriptEngineManager();
// 2.获取JavaScript引擎实例
ScriptEngine engine = manager.getEngineByName("JavaScript");
try {
// 3.使用eval执行脚本
engine.eval("function add(a,b){ return a+b; }");
// 4.检查脚本引擎是否被实现
if (engine instanceof Invocable) {
Invocable invocable = (Invocable) engine;
// 5. 调用JavaScript中的方法并输出
System.out.println(invocable.invokeFunction("add", 1, 2));
}
} catch (ScriptException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
2.执行js脚本文件
public static void main(String[] args) {
// 1.实例化 ScriptEngineManager
ScriptEngineManager manager = new ScriptEngineManager();
// 2.获取JavaScript引擎实例
ScriptEngine engine = manager.getEngineByName("JavaScript");
try {
//获取targe路径
String path = Thread.currentThread().getContextClassLoader().getResource("").getPath();
// 3.加载文件
engine.eval(new FileReader(path + "fileResource/js/Test.js"));
// 4.检查脚本引擎是否被实现
if (engine instanceof Invocable) {
Invocable invocable = (Invocable) engine;
// 5. 调用JavaScript中的方法并输出
System.out.println(invocable.invokeFunction("add", 1, 2));
}
} catch (ScriptException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
Test.js
function add(a, b) {
return a + b;
}
工作中只用到了这么多,所有只写到这,还有很多更强大的功能
比如js实现java接口
将java对象传递到js中
js调用java方法等等