public class Demo1 {
public static void main(String[] args) throws ScriptException, NoSuchMethodException, IOException {
//获得脚本引擎对象
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine engine = sem.getEngineByName("javascript");
//定义变量,存储到引擎上下文中
engine.put("msg", "leo is a good man");
System.out.println(engine.get("msg"));
String str = "var user = {name:'leo',age:18,schools:['清华','北大']};";
str += "print(user.name);";
//执行脚本
engine.eval(str);
engine.eval("msg = 'aa is a good school'");
System.out.println(engine.get("msg"));
System.out.println("##########################");
//定义函数
engine.eval("function add(a,b){var sum = a + b; return sum;}");
//执行js函数
//取得调用接口
Invocable jsInvoke = (Invocable) engine;
//执行脚本中定义的方法
Object result1 = jsInvoke.invokeFunction("add", new Object[] { 13, 20 });
System.out.println(result1);
//导入其他java包,使用其他包中的java类
//注:本例所用的环境java8已不支持Rhino,已改为Nashorn。添加脚本:load(\"nashorn:mozilla_compat.js\"); 运行
String jsCode = "load(\"nashorn:mozilla_compat.js\");importPackage(java.util); var list = Arrays.asList([\"北大\",\"清华\",\"aa\"]);";
engine.eval(jsCode);
List<String> list2 = (List<String>) engine.get("list");
for (String temp : list2) {
System.out.println(temp);
}
//执行一个js文件(将其放在项目下)
URL url = Demo1.class.getClassLoader().getResource("a.js");
String str1 = URLDecoder.decode(url.getPath(), "UTF-8");//用来解决路径中存在空格的情况
FileReader fr = new FileReader(str1);
engine.eval(fr);
fr.close();
}
}
测试Rhino脚本引擎执行JavaScript代码
最新推荐文章于 2024-09-02 09:29:49 发布