java 腳本相關(guān)的api在javax.script中
- 直接執(zhí)行js函數(shù):
public static void main(String[] args) {
// 1.實例化 ScriptEngineManager
ScriptEngineManager manager = new ScriptEngineManager();
// 2.獲取JavaScript引擎實例
ScriptEngine engine = manager.getEngineByName("JavaScript");
try {
// 3.使用eval執(zhí)行腳本
engine.eval("function add(a,b){ return a+b; }");
// 4.檢查腳本引擎是否被實現(xiàn)
if (engine instanceof Invocable) {
Invocable invocable = (Invocable) engine;
// 5. 調(diào)用JavaScript中的方法并輸出
System.out.println(invocable.invokeFunction("add", 1, 2));
}
} catch (ScriptException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
2.執(zhí)行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.檢查腳本引擎是否被實現(xiàn)
if (engine instanceof Invocable) {
Invocable invocable = (Invocable) engine;
// 5. 調(diào)用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實現(xiàn)java接口
將java對象傳遞到j(luò)s中
js調(diào)用java方法等等