Rhino脚本引擎

一,脚本引擎介绍:

使得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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值