java动态编程-Rhino脚本引擎
2016-05-24 10:32
609 查看
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); } } }
相关文章推荐
- Java集合
- JAVA集合概述
- AXIS2+Myeclipse实现WebService数据库存储简单实例
- Eclipse 编译错误 Access restriction:The type *** is not accessible due to restriction on... 解决方案
- Java线程安全和非线程安全
- Java成员变量的继承
- Spring声明式事务(xml配置事务方式)
- Java NIO编程
- java输出对象类总是为内存地址
- 网格弹簧质点系统模拟(Spring-Mass System by Fast Method)附源码
- java.sql.SQLException: 无效的列索引
- Java的异常处理
- java的若干问题(3)——多线程
- Java获取ClassLoader
- java获取到的时间和本地时间差8小时,教你如何加8小时
- Java设计模式系列之观察者模式
- java两种经典死锁例子,Lock发生死锁案列
- JAVA系统属性
- java中文乱码问题----java不同场景编码转换过程
- Java jar 指定main方法运行