日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

【Java脚本引擎】脚本引擎执行JavaScript代码

發布時間:2024/2/28 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java脚本引擎】脚本引擎执行JavaScript代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

應用場景

公司有30員工,每個人工資計算方式不同?,F在需要計算工資。

傳統的方法:一個接口,30個實現類。

使用腳本引擎:編寫一個xml文件,每人一個計算公式,使用的時候可以把公式加載到程序中,啟動時使用腳本引擎調用相關的腳本,計算工資。

通過腳本引擎管理器,獲得腳本引擎對象,執行相關代碼

Warning: Nashorn engine is planned to be removed from a future JDK release

警告:計劃從未來的JDK版本中刪除Nashorn引擎


示例(1):在Java中執行JS代碼

package cn.hanquan.rhino;import javax.script.ScriptEngine; import javax.script.ScriptEngineManager;//測試腳本引擎執行JavaScript代碼 public class TestRhino {public static void main(String[] args) throws Exception {// 獲得腳本引擎對象ScriptEngineManager sem = new ScriptEngineManager();ScriptEngine engine = sem.getEngineByName("javascript");// 定義變量,存儲到引擎的上下文中engine.put("msg", "hello~world!");String str = "var user= {name:'HanQuan', age:29};";str += "print(user.name);";// 執行腳本engine.eval(str);} }

運行結果

HanQuan

示例(2):分別通過 JavaScript/Java 獲取腳本引擎定義的msg變量、使用腳本引擎修改msg的內容

  • 引擎,相當于連接JavaScript和Java的橋梁。
  • 存儲到引擎的上下文中的變量msg,既可以被JavaScript操作,也可以被Java操作
package cn.hanquan.rhino;import javax.script.ScriptEngine; import javax.script.ScriptEngineManager;//測試腳本引擎執行JavaScript代碼 public class Demo1 {public static void main(String[] args) throws Exception {// 獲得腳本引擎對象ScriptEngineManager sem = new ScriptEngineManager();ScriptEngine engine = sem.getEngineByName("javascript");// 定義變量msg,存儲到引擎的上下文中engine.put("msg", "hello~world!");// 使用js修改msg內容engine.eval("msg='Hello,Are you Okayyyy'");// 分別通過 JavaScript/Java 獲取msgengine.eval("print('通過JavaScript獲取msg: '+msg);");System.out.println("通過Java獲取msg:" + engine.get("msg"));} }

運行結果

通過JavaScript獲取msg: Hello,Are you Okayyyy 通過Java獲取msg:Hello,Are you Okayyyy

示例(3):分別用JavaScript和Java,執行JavaScipt中的函數

package cn.hanquan.rhino;import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager;//測試腳本引擎執行JavaScript代碼 public class Demo2 {public static void main(String[] args) throws Exception {// 獲得腳本引擎對象ScriptEngineManager sem = new ScriptEngineManager();ScriptEngine engine = sem.getEngineByName("javascript");// 定義函數engine.eval("function add(a,b){var sum=a+b; return sum;}");// 通過JavaScript執行函數engine.eval("print('通過JavaScript執行函數: ' + add(11,22));");// 通過Java執行函數Invocable jsInvoke = (Invocable) engine;Object res = jsInvoke.invokeFunction("add", new Object[] { 44, 55 });System.out.println("通過Java執行函數: " + res);} }

運行結果

通過JavaScript執行函數: 33 通過Java執行函數: 99.0

還可以導入其他Java包
運行結果

北京尚學堂 清華大學 北京大學

* 若想要深入了解 Rhino 細節,可以上 Rhino 官網,詳細學習 Rhino 語法。
* 另外,還有很多用 Java 執行 JS 腳本的方法, Rhino 只是其中一種。


執行本地的JavaScript文件

JS代碼

目錄結構

Java代碼

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的【Java脚本引擎】脚本引擎执行JavaScript代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。