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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

java rhino 下载_8.4(Java学习笔记)java脚本引擎(Rhino)

發(fā)布時間:2023/12/29 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java rhino 下载_8.4(Java学习笔记)java脚本引擎(Rhino) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、java腳本引擎

java腳本引擎是溝通java和腳本語句之間的橋梁,可以通過對應(yīng)的腳本引擎在java中調(diào)用各種腳本語言。

二、腳本引擎執(zhí)行腳本代碼

ScriptEngineManager:為ScriptEngine提供實例化機制。

方法:getEngineByName(String shortName);//查找并創(chuàng)建指定名稱的腳本引擎

ScriptEngine:是一個接口,該接口提供了基本的腳本功能(包括執(zhí)行腳本,設(shè)置和獲取值的方法)。

方法:get(String key);//獲取指定key所對應(yīng)的值,這里的key看做變量名稱,值看做變量名所對應(yīng)的值。

eval(String script);//執(zhí)行指定的腳本代碼

eval(Reader reader);//執(zhí)行指定的腳本文件

java執(zhí)行JavaScript腳本步驟:

1.獲取腳本引擎

2.指定腳本名稱

3.編寫腳本語句

4.執(zhí)行腳本

import javax.script.ScriptEngine;

import javax.script.ScriptEngineManager;

import javax.script.ScriptException;public classTestRhino {public static voidmain(String[] args) throws ScriptException {//獲取腳本引擎,并指定腳本語言

ScriptEngineManager sem = newScriptEngineManager();

ScriptEngine engine= sem.getEngineByName("javascript");//定義上下文變量,被腳本和java共享

engine.put("msg", "javascript");//定義腳本代碼

String str = "var user = {name:'hcf',age:19,sex:'man'};";

str+="print(user.name);";//執(zhí)行腳本

engine.eval(str);

System.out.println("修改前的內(nèi)容:"+engine.get("msg"));

engine.eval("msg ='java';");//修改msg內(nèi)容

System.out.println("修改后的內(nèi)容:"+engine.get("msg"));

}

}

運行結(jié)果:

hcf

修改前的內(nèi)容javascript

修改后的內(nèi)容java

三、腳本引擎執(zhí)行腳本方法

1.執(zhí)行腳本方法,首先肯定是要在腳本中定義方法,然后執(zhí)行。

2.執(zhí)行時需要將engine轉(zhuǎn)換為Invcable,然后調(diào)用其中的invokeFun

Invocable:由ScriptEngines實現(xiàn)的可選接口,其方法允許調(diào)用先前已執(zhí)行的腳本中的程序(方法)。

3.調(diào)用Object invokeFunction(String name, Object... args);執(zhí)行指定方法。

name為方法名稱,args為方法參數(shù),返回是一個Object對象

importjavax.script.Invocable;importjavax.script.ScriptEngine;importjavax.script.ScriptEngineManager;importjavax.script.ScriptException;public classTestRhino {public static void main(String[] args) throwsScriptException {

ScriptEngineManager sem= newScriptEngineManager();

ScriptEngine engine= sem.getEngineByName("javascript");//定義方法的字符串形式

String funAdd = "function add(a,b){"

+ " var sum = a + b;"

+ " return sum;"

+ " }";

engine.eval(funAdd);//這一步可以看做將方法寫入腳本

Invocable invo = (Invocable)engine;//轉(zhuǎn)換成Invocable

Object result = null;try{//執(zhí)行腳本中方法

result = invo.invokeFunction("add",new Object[]{17,23});

}catch(NoSuchMethodException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println(result);

}

}

運行結(jié)果:

40.0

四、腳本引擎執(zhí)行腳本文件

1、執(zhí)行腳本文件,首先我們要指定文件的路徑。

2、通過這個路徑構(gòu)建一個Reader對象

3、調(diào)用eval(Reader reader);//執(zhí)行指定的腳本文件

腳本文件內(nèi)容

importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.Reader;importjavax.script.ScriptEngine;importjavax.script.ScriptEngineManager;importjavax.script.ScriptException;public classTestRhino {public static void main(String[] args) throwsScriptException {//E:\eclipse\Rhino

ScriptEngineManager sem = newScriptEngineManager();

ScriptEngine engine= sem.getEngineByName("javascript");//腳本文件路徑

String path = "E:\\eclipse\\Rhino\\test.js";

Reader read= null;try{//通過腳本文件路徑構(gòu)造Reader對象

read = new FileReader(newFile(path));

}catch(FileNotFoundException e) {//TODO Auto-generated catch block

e.printStackTrace();

}//執(zhí)行腳本文件

engine.eval(read);

}

}

運行結(jié)果:

a+b = 7

總結(jié)

以上是生活随笔為你收集整理的java rhino 下载_8.4(Java学习笔记)java脚本引擎(Rhino)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。