测试Rhino脚本引擎执行JavaScript代码

public class Demo1 {
    public static void main(String[] args) throws ScriptException, NoSuchMethodException, IOException {
        //获得脚本引擎对象
        ScriptEngineManager sem = new ScriptEngineManager();
        ScriptEngine engine = sem.getEngineByName("javascript");

        //定义变量,存储到引擎上下文中
        engine.put("msg", "leo is a good man");
        System.out.println(engine.get("msg"));
        String str = "var user = {name:'leo',age:18,schools:['清华','北大']};";
        str += "print(user.name);";

        //执行脚本
        engine.eval(str);
        engine.eval("msg = 'aa is a good school'");

        System.out.println(engine.get("msg"));
        System.out.println("##########################");

        //定义函数
        engine.eval("function add(a,b){var sum = a + b; return sum;}");
        //执行js函数
        //取得调用接口
        Invocable jsInvoke = (Invocable) engine;
        //执行脚本中定义的方法
        Object result1 = jsInvoke.invokeFunction("add", new Object[] { 13, 20 });
        System.out.println(result1);

        //导入其他java包,使用其他包中的java类
        //注:本例所用的环境java8已不支持Rhino,已改为Nashorn。添加脚本:load(\"nashorn:mozilla_compat.js\"); 运行
        String jsCode = "load(\"nashorn:mozilla_compat.js\");importPackage(java.util); var list = Arrays.asList([\"北大\",\"清华\",\"aa\"]);";
        engine.eval(jsCode);

        List<String> list2 = (List<String>) engine.get("list");
        for (String temp : list2) {
            System.out.println(temp);
        }

        //执行一个js文件(将其放在项目下)
        URL url = Demo1.class.getClassLoader().getResource("a.js");
        String str1 = URLDecoder.decode(url.getPath(), "UTF-8");//用来解决路径中存在空格的情况
        FileReader fr = new FileReader(str1);
        engine.eval(fr);
        fr.close();

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值