Java中使用脚本引擎运行脚本语言

在Java中运行脚本语言,例如JavaScript。

步骤:

  1、创建脚本引擎管理器  ScriptEngineManager

  2、从管理器中获取一个引擎  ScriptEngine

  3、通过put(key ,value) 可以创建变量到引擎上下文中

  4、通过eval(String jscCode)   可以执行js代码

 


 

例子:

/**
 * 执行脚本语言,例如javascript
 */
public class TestClass {
    public static void main(String[] args) throws Exception {
        //1、创建一个脚本引擎管理器
        ScriptEngineManager sem = new ScriptEngineManager();
        //2、从工厂中拿到一个js脚本引擎
        ScriptEngine engine = sem.getEngineByName("javascript");

        //脚本内容:定义一个变量,存储到引擎上下文中
        engine.put("msg","i love you");
        //脚本内容:创建一个user类,里面三个属性,分别为字符串name,int的age,字符串数组schools。
        String str ="var user = {name:'lurenjia',age:18,schools:['家里蹲','江南皮革厂']};";
        //脚本内容:打印user类的name属性
        str += "print(user.name);";

        //执行脚本
        engine.eval(str);
        //脚本内容:修改msg
        engine.eval("msg = 'i hat you.';");
        System.out.println(engine.get("msg"));

        //脚本内容:定义add求和函数
        engine.eval("function add(a,b){var sum =a+b;return sum;};");
        //自动转型
        Invocable jsInvoke = (Invocable)engine;
        //调用指定的add方法,获取放回值。
        Object result = jsInvoke.invokeFunction("add",new Object[]{5,7});
        System.out.println(result);


        //使用java包里面的工具,例如java.util包下面的Arrays工具类。
        String jsCode = "var list = java.util.Arrays.asList([\'lurenjia\',\'caixukun\',\'aoteman\']);";
        engine.eval(jsCode);
        //获取list
        List<String> list = (List<String>) engine.get("list");
        for(String s:list){
            System.out.println("内容为:"+s);
        }

    }
}

 运行结果:

 

posted @ 2022-11-20 18:07  在博客做笔记的路人甲  阅读(870)  评论(0编辑  收藏  举报