最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中使用JavaScript腳本的方法步驟

 更新時(shí)間:2020年06月10日 14:36:25   作者:SimpleWu  
這篇文章主要介紹了Java中使用JavaScript腳本的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

簡(jiǎn)介 Nashorn

Nashorn 一個(gè) javascript 引擎。

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

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

與先前的Rhino實(shí)現(xiàn)相比,這帶來(lái)了2到10倍的性能提升。

使用方式

1. 編寫(xiě)JavaScript腳本

列:JavaScript方法使用Java對(duì)象執(zhí)行方法獲取返回值。

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

該腳本變量定義為 String script1;

2. 創(chuàng)建JavaScript容器用戶存儲(chǔ)腳本 ScirptContainer.java

public class ScirptContainer {
 
 
 public static ScriptEngine engine;//腳本引擎
 
 static {
 ScriptEngineManager manager = new ScriptEngineManager();//腳本引擎管理
 engine = manager.getEngineByName("nashorn");//獲取nashorn腳本引擎
 engine.getContext().getWriter();//獲取正文并且寫(xiě)入
 }
 
 private ConcurrentHashMap<Integer, CompiledScript> scripts = new ConcurrentHashMap<>();//腳本存儲(chǔ)容器
 
 
 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){
 //容器中無(wú)腳本創(chuàng)建腳本對(duì)象
 Compilable compilable = (Compilable) engine;
 //編譯JavaScript腳本
 compiledScript = compilable.compile(script);
 //腳本對(duì)象存入容器中
 scripts.put(hashCode, compiledScript);
 }
 return compiledScript;
 } 
}

3. Java執(zhí)行JavaScript腳本

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

注意事項(xiàng):

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

到此這篇關(guān)于Java中使用JavaScript腳本的方法步驟的文章就介紹到這了,更多相關(guān)Java使用JavaScript腳本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

作者: SimpleWu

出處:https://www.cnblogs.com/SimpleWu/p/12598442.html

本站使用「SimpleWu BY 4.0」創(chuàng)作共享協(xié)議,轉(zhuǎn)載請(qǐng)?jiān)谖恼旅黠@位置注明作者及出處。

相關(guān)文章

  • IDEA創(chuàng)建自定義模板圖文教程

    IDEA創(chuàng)建自定義模板圖文教程

    我們每次在使用IntelliJ IDEA 時(shí)總會(huì)有一些文件是一直被創(chuàng)建的,今天我們就來(lái)學(xué)習(xí)一下IntelliJ IDEA 的自定義模板功能,文中有詳細(xì)的圖文介紹,需要的朋友可以參考下
    2021-05-05
  • Springboot?格式化LocalDateTime的方法

    Springboot?格式化LocalDateTime的方法

    這篇文章主要介紹了Springboot格式化LocalDateTime的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • mybatis中如何實(shí)現(xiàn)一個(gè)標(biāo)簽執(zhí)行多個(gè)sql語(yǔ)句

    mybatis中如何實(shí)現(xiàn)一個(gè)標(biāo)簽執(zhí)行多個(gè)sql語(yǔ)句

    這篇文章主要介紹了mybatis中如何實(shí)現(xiàn)一個(gè)標(biāo)簽執(zhí)行多個(gè)sql語(yǔ)句問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • java基礎(chǔ)之泛型知識(shí)點(diǎn)總結(jié)

    java基礎(chǔ)之泛型知識(shí)點(diǎn)總結(jié)

    這篇文章主要介紹了java基礎(chǔ)之泛型知識(shí)點(diǎn)總結(jié),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04
  • Spring中容器創(chuàng)建的四種方式示例

    Spring中容器創(chuàng)建的四種方式示例

    這篇文章主要介紹了Spring中容器創(chuàng)建的四種方式示例,Spring容器是Spring框架的核心部分,它負(fù)責(zé)管理和組織應(yīng)用程序中的對(duì)象,它提供了一種輕量級(jí)的、非侵入式的方式來(lái)實(shí)現(xiàn)對(duì)象的創(chuàng)建、依賴注入和生命周期管理,需要的朋友可以參考下
    2023-10-10
  • Spring整合Junit的使用詳解

    Spring整合Junit的使用詳解

    這篇文章主要介紹了Spring整合Junit的使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 關(guān)于@SpringBootApplication詳解

    關(guān)于@SpringBootApplication詳解

    這篇文章主要介紹了關(guān)于@SpringBootApplication的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • java web在高并發(fā)和分布式下實(shí)現(xiàn)訂單號(hào)生成唯一的解決方案

    java web在高并發(fā)和分布式下實(shí)現(xiàn)訂單號(hào)生成唯一的解決方案

    這篇文章主要介紹了java web在高并發(fā)和分布式下實(shí)現(xiàn)訂單號(hào)生成唯一的解決方案,需要的朋友可以參考下
    2017-11-11
  • 一文詳解Java線程的6種狀態(tài)與生命周期

    一文詳解Java線程的6種狀態(tài)與生命周期

    一個(gè)線程在給定的時(shí)間點(diǎn)只能處于一種狀態(tài)。線程可以有6種狀態(tài):New、Runnable、Blocked、Waiting、Timed?waiting和Terminated。本文將詳細(xì)講解這6種狀態(tài),需要的可以參考一下
    2022-05-05
  • IDEA一鍵完成格式化、去除無(wú)用引用、編譯的操作

    IDEA一鍵完成格式化、去除無(wú)用引用、編譯的操作

    這篇文章主要介紹了IDEA一鍵完成格式化、去除無(wú)用引用、編譯的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12

最新評(píng)論

石柱| 吉林省| 郯城县| 东源县| 西华县| 高密市| 连州市| 丹江口市| 辽阳县| 新安县| 九寨沟县| 安龙县| 青川县| 子洲县| 福泉市| 思茅市| 巨野县| 东方市| 赞皇县| 巴青县| 梅州市| 叙永县| 永修县| 汾阳市| 二连浩特市| 青河县| 札达县| 恩平市| 砀山县| 库车县| 永城市| 华安县| 尼勒克县| 门源| 保亭| 金乡县| 全州县| 兴安盟| 钟祥市| 江华| 团风县|