溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中如何使用JavaScript腳本

發布時間:2020-07-17 11:00:46 來源:億速云 閱讀:208 作者:小豬 欄目:編程語言

這篇文章主要為大家展示了Java中如何使用JavaScript腳本,內容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

簡介 Nashorn

Nashorn 一個 javascript 引擎。

從JDK 1.8開始,Nashorn取代Rhino(JDK 1.6, JDK1.7)成為Java的嵌入式JavaScript引擎。Nashorn完全支持ECMAScript 5.1規范以及一些擴展。

它使用基于JSR 292的新語言特性,其中包含在JDK 7中引入的 invokedynamic,將JavaScript編譯成Java字節碼。

與先前的Rhino實現相比,這帶來了2到10倍的性能提升。

使用方式

1. 編寫JavaScript腳本

列:JavaScript方法使用Java對象執行方法獲取返回值。

function scriptFunction(obj){
 var a = 1;
 var b = 2;
 return obj.sum(a,b);
}
scriptFunction(obj);//調用該方法

該腳本變量定義為 String script1;

2. 創建JavaScript容器用戶存儲腳本 ScirptContainer.java

public class ScirptContainer {
 
 
 public static ScriptEngine engine;//腳本引擎
 
 static {
 ScriptEngineManager manager = new ScriptEngineManager();//腳本引擎管理
 engine = manager.getEngineByName("nashorn");//獲取nashorn腳本引擎
 engine.getContext().getWriter();//獲取正文并且寫入
 }
 
 private ConcurrentHashMap<Integer, CompiledScript> scripts = new ConcurrentHashMap<>();//腳本存儲容器
 
 
 public CompiledScript getCompiledScript(String script) throws ScriptException{
 //判斷腳本是否為空
 if(script == null || "".equals(script)){
 throw new ScriptException("JavaScript empty");
 }
 //獲取腳本Hash
 int hashCode = script.hashCode();
 //從容器中獲取腳本
 CompiledScript compiledScript = scripts.get(hashCode);
 if(compiledScript == null){
 //容器中無腳本創建腳本對象
 Compilable compilable = (Compilable) engine;
 //編譯JavaScript腳本
 compiledScript = compilable.compile(script);
 //腳本對象存入容器中
 scripts.put(hashCode, compiledScript);
 }
 return compiledScript;
 } 
}

3. Java執行JavaScript腳本

public class ScriptHandler {
 
 //創建容器對象
 private ScirptContainer scirptContainer = new ScirptContainer();
 
 //需要執行的對象
 String js1 = "function scriptFunction(obj){ var a = 1; var b = 2; return obj.sum(a,b); } scriptFunction(obj);";
 
 @Test
 public void test() throws ScriptException{
 //獲取腳本對象
 CompiledScript c1 = scirptContainer.getCompiledScript(js1);
 //創建參數綁定
 Bindings bindings = scirptContainer.engine.createBindings();
 //obj參數綁定SumTest類
 bindings.put("obj", new SumTest());
 //執行JavaScript腳本并且打印返回值
 System.out.println(c1.eval(bindings));
 }
}

注意事項:

  • 腳本中scriptFunction(obj);是必須存在,否則不會執行方法.
  • 腳本中可以創建Java對象,需要全類名如var map = new java.util.HashMap()

以上就是關于Java中如何使用JavaScript腳本的內容,如果你們有學習到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女