亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

js腳本編寫教程 javascript腳本怎么運(yùn)行


js腳本編寫教程 javascript腳本怎么運(yùn)行

文章插圖
1 概述本文介紹在 Java 環(huán)境中執(zhí)行 JavaScript 腳本的簡(jiǎn)單使用,具體包含以下內(nèi)容
Java 8 中的內(nèi)置 Nashorn Javascript 引擎介紹Rhino JavaScript 引擎介紹以及對(duì) XML 的處理介紹2 Java 8 中的內(nèi)置 Nashorn Javascript 引擎介紹Nashorn 是 Java 8 中內(nèi)置的 JavaScript 引擎,無(wú)需加入任何依賴 。
Nashorn 基本使用步驟如下
new 出 ScriptEngineManager 對(duì)象通過(guò) ScriptEngineManager 對(duì)象中的 getEngineByName 方法獲取指定的 JavaScript 引擎,返回 ScriptEngine 對(duì)象Java 8 中的默認(rèn)的 Javascript 引擎包括:[nashorn, Nashorn, js, JS, JavaScript, javascript, ECMAScript, ecmascript]通過(guò) ScriptEngine 對(duì)象的 eval 方法來(lái)執(zhí)行 JavaScript 腳本 。2.1 通過(guò) PrintWriter 對(duì)象獲取腳本中的 print 輸出Javascript 腳本中沒有函數(shù),沒有返回值,通過(guò) print 輸出內(nèi)容,這時(shí)需要通過(guò) PrintWriter 獲取讀取腳本中的 print 輸出,具體如下
@Testpublic void test_nashorn() {try {ScriptEngine engine = new ScriptEngineManager().getEngineByName("Nashorn");ScriptContext scriptContext = engine.getContext();StringWriter stringWriter = new StringWriter();PrintWriter printWriter = new PrintWriter(stringWriter);scriptContext.setWriter(printWriter);String jsString = "var obj=JSON.parse('{\\\"data\\\":\\\"7155\\\",\\\"sign\\\":\\\"success\\\",\\\"message\\\":null}');print(obj.sign==\"success\");";stringWriter = new StringWriter();printWriter = new PrintWriter(stringWriter);scriptContext.setWriter(printWriter);engine.eval(jsString);System.out.println(String.format("1 result = %s",stringWriter.toString()));jsString = "var obj=JSON.parse('{\\\"data\\\":\\\"7157\\\",\\\"sign\\\":\\\"success\\\",\\\"message\\\":null}');print((function getData() {return obj.data;})())";stringWriter = new StringWriter();printWriter = new PrintWriter(stringWriter);scriptContext.setWriter(printWriter);engine.eval(jsString);System.out.println(String.format("2 result = %s",stringWriter.toString()));jsString = "var obj=JSON.parse('{\\\"data\\\":\\\"7157\\\",\\\"sign\\\":\\\"success\\\",\\\"message\\\":null}');print((function getData() {return obj.data;})())";stringWriter = new StringWriter();printWriter = new PrintWriter(stringWriter);scriptContext.setWriter(printWriter);engine.eval(jsString);System.out.println(String.format("3 result = %s",stringWriter.toString()));} catch (Exception e) {e.printStackTrace();}}2.2 獲取匿名函數(shù)的返回值Javascript 腳本是一個(gè)匿名函數(shù)并且有返回值,通過(guò) eval 函數(shù)可以直接
@Testpublic void test_js_function_return() {try {ScriptEngine engine = new ScriptEngineManager().getEngineByName("Nashorn");String jsFunction = "(function(){var obj=JSON.parse('{\\\"data\\\":\\\"7155\\\",\\\"sign\\\":\\\"success\\\",\\\"message\\\":null}');return obj.sign==\"success\"})();";Boolean result = (Boolean) engine.eval(jsFunction);System.out.println(result);} catch (Exception e) {e.printStackTrace();}}2.3 調(diào)用 Javascript 腳本中指定的函數(shù)Javascript 腳本中有變量,有多個(gè)函數(shù),具體如下
@Testpublic void test_invoke_js_function() {try {ScriptEngine engine = new ScriptEngineManager().getEngineByName("Nashorn");/*var obj = JSON.parse('{\"data\":\"7155\",\"sign\":\"success\",\"message\":null}');function checkSign() {return obj.sign == 'success'}function getData() {return obj.data}function calculate(a, b) {return a + b}*/String jsFunction = "var obj=JSON.parse('{\\\"data\\\":\\\"7155\\\",\\\"sign\\\":\\\"success\\\",\\\"message\\\":null}');function checkSign(){return obj.sign=='success'}function getData(){return obj.data}function calculate(a,b){return a+b}";engine.eval(jsFunction);Invocable invocable = (Invocable) engine;Object result = invocable.invokeFunction("checkSign", null);System.out.println(result);result = invocable.invokeFunction("getData", null);System.out.println(result);result = invocable.invokeFunction("calculate", 2, 5);System.out.println(result);} catch (Exception e) {e.printStackTrace();}}輸出如下true71557.02.4 讀取 Javascript 文件并執(zhí)行這種情況是讀取 Javascript 文件,并執(zhí)行,具體如下


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問(wèn)題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助: