這篇文章主要為大家展示了Java中如何使用JavaScript腳本,內(nèi)容簡而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。
成都創(chuàng)新互聯(lián)專注于企業(yè)成都營銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、濉溪網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、商城網(wǎng)站定制開發(fā)、集團公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為濉溪等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
簡介 Nashorn
Nashorn 一個 javascript 引擎。
從JDK 1.8開始,Nashorn取代Rhino(JDK 1.6, JDK1.7)成為Java的嵌入式JavaScript引擎。Nashorn完全支持ECMAScript 5.1規(guī)范以及一些擴展。
它使用基于JSR 292的新語言特性,其中包含在JDK 7中引入的 invokedynamic,將JavaScript編譯成Java字節(jié)碼。
與先前的Rhino實現(xiàn)相比,這帶來了2到10倍的性能提升。
使用方式
1. 編寫JavaScript腳本
列:JavaScript方法使用Java對象執(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容器用戶存儲腳本 ScirptContainer.java
public class ScirptContainer { public static ScriptEngine engine;//腳本引擎 static { ScriptEngineManager manager = new ScriptEngineManager();//腳本引擎管理 engine = manager.getEngineByName("nashorn");//獲取nashorn腳本引擎 engine.getContext().getWriter();//獲取正文并且寫入 } private ConcurrentHashMapscripts = 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){ //容器中無腳本創(chuàng)建腳本對象 Compilable compilable = (Compilable) engine; //編譯JavaScript腳本 compiledScript = compilable.compile(script); //腳本對象存入容器中 scripts.put(hashCode, compiledScript); } return compiledScript; } }
3. Java執(zhí)行JavaScript腳本
public class ScriptHandler { //創(chuàng)建容器對象 private ScirptContainer scirptContainer = new ScirptContainer(); //需要執(zhí)行的對象 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); //創(chuàng)建參數(shù)綁定 Bindings bindings = scirptContainer.engine.createBindings(); //obj參數(shù)綁定SumTest類 bindings.put("obj", new SumTest()); //執(zhí)行JavaScript腳本并且打印返回值 System.out.println(c1.eval(bindings)); } }
注意事項:
以上就是關(guān)于Java中如何使用JavaScript腳本的內(nèi)容,如果你們有學(xué)習(xí)到知識或者技能,可以把它分享出去讓更多的人看到。