【Java基础】脚本引擎

源代码:https://gitee.com/AgentXiao/reflection
脚本引擎要点:
1、什么是脚本引擎
2、获得脚本引擎对象
3、执行脚本语句
4、执行js文件

一、脚本引擎

JAVA脚本引擎是从JDK6.0之后添加的新功能。
脚本引擎介绍:

  • 使得 Java 应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在 Java 平台上调用各种脚本语言的目的。
  • Java 脚本 API 是连通 Java 平台和脚本语言的桥梁。
  • 可以把一些复杂异变的业务逻辑交给脚本语言处理,这又大大提高了开发效率。

二、实现

/**
 * @ClassName Demo01
 * @Description 测试脚本引擎执行js代码
 * @Author xwd
 * @Date 2018/10/22 11:12
 */
public class Demo01 {
    public static void main(String[] args) throws ScriptException, NoSuchMethodException, FileNotFoundException {
        //获得脚本引擎对象
        ScriptEngineManager sem = new ScriptEngineManager();
        ScriptEngine engine = sem.getEngineByName("javascript");

        //定义变量,存储到引擎上下文
        engine.put("msg","xwd is a good man");
        String str = "var user = {name:'xwd',age:18,schools:['清华大学','华南农业大学']};";
        str += "print(user.name);";

        //执行脚本
        engine.eval(str);
        engine.eval("msg='lsm is beautiful!'");
        System.out.println(engine.get("msg"));

        //定义js函数
        engine.eval("function add(a,b){var sum = a + b;return sum;}");
        //取得调用接口
        Invocable invocable = (Invocable) engine;
        //执行js函数
        Object o = invocable.invokeFunction("add", new Object[]{13, 22});
        System.out.println(o);

        //导入其他的java包,使用其他包中的java类
//        String code = "importPackage(java.util);var list=Arrays.asList([\"xwd\",\"lsm\",\"bxd\"]);";
//        engine.eval(code);
//
//        List list = (List)engine.get("list");
//        for(String l:list){
//            System.out.println(l);
//        }

        //执行一个js文件
        URL resource = Demo01.class.getClassLoader().getResource("pri/xiaowd/engine/test.js");
        engine.eval(new FileReader(resource.getPath()));
    }
}
【Java基础】脚本引擎_第1张图片
控制台输出

你可能感兴趣的:(【Java基础】脚本引擎)