java动态编程-Rhino脚本引擎
来源:互联网 发布:自行车大全软件 编辑:程序博客网 时间:2024/05/17 11:56
java 6.0提供一些标准接口来操作脚本语言,它让java有能力在代码中,动态的执行脚本语言,接口的实现就由第三方来实现。Rhino引擎是一个实现javascript脚本接口的第三方实现,java6.0之后,默认引入,作为java的jar包。
简单使用见下面的例子
/** * RhinoDemo引擎demo * @author liuxg * @date 2016年5月24日 上午10:30:37 */public class RhinoDemo { public static void main(String[] args) throws Exception { ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine se = sem.getEngineByName("javascript"); //使用上下文,执行eval之后,js的变量和函数都存储于上下文,通过get和put可以获取和保存变量,java和javascript都可以使用同一个上下文 se.put("myame", "liuxg !!"); System.out.println(se.get("myame")); se.eval("var yourname = 'who are you ?'"); System.out.println(se.get("yourname")); //执行变量 String script = "var compo = {addr : \"广州\",tel : \"12345678901\"};"; script += "println(compo.addr + \" : \" + compo.tel)"; se.eval(script); //执行js函数 String funscript = "function sum(a,b){return a + b ;}"; se.eval(funscript); Invocable jsInvocable = (Invocable)se; Object obj = jsInvocable.invokeFunction("sum", 1,2); System.out.println("sum = " + obj); //执行js文件 URL url = RhinoDemo.class.getClassLoader().getResource("rhino.js");//获取classpath下的js文件 FileReader reader = new FileReader(url.getFile()); se.eval(reader); Object obj1 = jsInvocable.invokeFunction("skyscolor"); System.out.println(se.get("skycolor") + " -- " + obj1); //js和java代码混合用 String jsjavacode = "importPackage(java.util); var names = Arrays.asList(\"liuxg1\",\"liuxg2\",\"liuxg3\")"; se.eval(jsjavacode); List<String> names = (List<String>) se.get("names"); for (String name : names) { System.out.println(name); } }}
0 0
- java动态编程-Rhino脚本引擎
- JavaScript脚本引擎Rhino
- Rhino脚本引擎
- java 动态编译与用Rhino引擎执行javascript代码
- 脚本引擎Rhino执行javascript代码
- 纯java 的javascript引擎:rhino
- 纯java 的javascript引擎:rhino
- 纯java 的javascript引擎:rhino .
- java调用javascript :js引擎rhino
- java中使用javascript Rhino 引擎
- Java学习之动态编译-动态脚本引擎-脚本引擎执行javascript代码
- JAVA动态编译之脚本引擎(十三)
- java调用Rhino(javascript)
- Mozilla Rhino:使用java语言来解释和执行javascript脚本(转)
- Mozilla Rhino:使用java语言来解释和执行javascript脚本(转)
- 开源的JavaScript引擎实现:Rhino
- JavaScript引擎速度比较: rhino 与 V8
- 1. javascript 引擎Rhino源代码分析 简介
- jmeter 压力测试各种值的意思 --吞吐量 样本
- Java中的null是个什么东西?
- RelativeLayout的子控件的布局属性
- scrapy xpath提取标签
- OJ之栈的基本使用
- java动态编程-Rhino脚本引擎
- 【Socket编程】篇四之并发服务器
- 使用json文件为当前类文件属性赋值(org.nutz.json.Json)
- 关于服务端技术如何学
- * { Box-sizing: Border-box } FTW
- 二、观察者模式--小伟带你学设计模式
- [疯狂Java]集合:专门用于聚集操作的一次性集合——Stream(流)
- Generic Xcode Archive 解决方案
- iOS学习之——init