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
原创粉丝点击