Rhino脚本引擎
来源:互联网 发布:淘宝如何好评截图 编辑:程序博客网 时间:2024/06/05 06:23
一,脚本引擎介绍:
使得Java应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在java平台上调用各种脚本语言的目的。
java脚本API是联通JAVA平台和脚本语言的桥梁。
可以把一些复杂异变得业务逻辑交给脚本语言处理,这又大大提高了开发效率。
二,相关代码
最好在Myeclipse中执行,可以避免很多问题。
public static void main(String[] args) throws Exception { //获得脚本引擎对象 ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine engine = sem.getEngineByName("js"); //定义变量 engine.put("msg","you are the apple of my eyes");//向上下文定义一个变量 //engine.put("out", System.out); String str = "var user = {name:'vvv',age:18,schools:['北京大学','清华大学']};"; //str += "java.lang.System.out.println(user.name)"; str += "print(user.name)"; //在eclipse中此处不可以使用str += "println(user.name)"; 因为js中根本不认识println().需要用print替代,或者使用完整的把在Java中的包也写出来 因为Js可以访问java的各种类 //执行脚本 engine.eval(str); //修改变量的值 engine.eval("msg = 'you are the apple';"); System.out.println(engine.get("msg"));//定义JS函数 engine.eval("function add(a,b){var sum = a + b;return sum;}"); //取得调用接口 Invocable jsInvoke = (Invocable) engine; //执行脚本中定义的方法 Object result = jsInvoke.invokeFunction("add",new Object[]{10,20}); System.out.println(result); //导入其他java包,使用其他包中的java类 String jsCode = "importPackage(java.util);var list = new Arrays.asList([\"清华大学\",\"北京大学\",\"人民大学\"]);"; engine.eval(jsCode); List<String> list2 = (List<String>) engine.get("list"); for(String temp:list2) { System.out.println(temp); } //执行一个Js文件 URL url = Demo01.class.getClassLoader().getResource("a.js"); FileReader fr = new FileReader(url.getPath()); engine.eval(fr); fr.close(); }}
0 0
- JavaScript脚本引擎Rhino
- Rhino脚本引擎
- 脚本引擎Rhino执行javascript代码
- java动态编程-Rhino脚本引擎
- 纯java 的javascript引擎:rhino
- 纯java 的javascript引擎:rhino
- 纯java 的javascript引擎:rhino .
- java调用javascript :js引擎rhino
- 开源的JavaScript引擎实现:Rhino
- JavaScript引擎速度比较: rhino 与 V8
- 1. javascript 引擎Rhino源代码分析 简介
- java中使用javascript Rhino 引擎
- Rhino
- Rhino
- 2. javascript 引擎Rhino源代码分析 简单代码分析
- java 动态编译与用Rhino引擎执行javascript代码
- 【Android】不使用WebView来执行Javascript脚本(Rhino)
- 【Android】不使用WebView来执行Javascript脚本(Rhino)
- phoenix 3.1 + hbase 0.94.21 的安装和使用
- Codevs 1684 垃圾陷阱
- FFMPEG 硬件解码
- VMWare中Ubuntu重启后无法上网(已解决)
- pixhawk 调试随笔
- Rhino脚本引擎
- Delphi,在DelphiXE下使用DirectX的初步摸索
- Angular find controller from element or no element
- 添加本机jdk到MyEclipse默认
- 欢迎使用CSDN-markdown编辑器
- hdu 5253 连接的管道(kruskal)
- Spring学习之Bean的自动装配(非注解)
- 【机房收费系统】——收官
- POJ 1679 最小生成树是否唯一 次小生成树