• java 脚本引擎执行js


    为用到时,使用方便直接保存一下代码

     1 package com.xzlf.reflectTest;
     2 
     3 import java.io.BufferedReader;
     4 import java.io.FileInputStream;
     5 import java.io.InputStreamReader;
     6 import java.io.Reader;
     7 import java.util.List;
     8 
     9 import javax.script.Invocable;
    10 import javax.script.ScriptEngine;
    11 import javax.script.ScriptEngineManager;
    12 
    13 /**
    14  * java 中的脚本引擎
    15  * @author xzlf
    16  *
    17  */
    18 public class Demo05 {
    19     public static void main(String[] args) throws Exception {
    20         // 获取脚本引擎对象
    21         ScriptEngineManager manager = new ScriptEngineManager();
    22         ScriptEngine engine = manager.getEngineByName("javascript");
    23         // 定义变量
    24         engine.put("msg", "Hello World!");
    25         String str = "var user = {name:'张三', age:18};";
    26         str += "print(user.name);";
    27         // 执行脚本
    28         engine.eval(str);
    29         engine.eval("msg='Hello Java'");
    30         System.out.println(engine.get("msg"));
    31         
    32         // 定义函数
    33         engine.eval("function add(a, b){ return a +b;}");
    34         // 取得调用接口
    35         Invocable jsInvocable = (Invocable) engine;
    36         // 执行脚本中定义的方法 
    37         Object result = jsInvocable.invokeFunction("add", 11, 12);
    38         System.out.println(result);
    39         
    40         // 导入java包,使用其他包中的java类
    41         String jsCode = "var list = java.util.Arrays.asList(["Java", "Html", "MySQL"])";
    42         engine.eval(jsCode);
    43         List<String> list = (List<String>) engine.get("list");
    44         for (String string : list) {
    45             System.out.println(string);
    46         }
    47         
    48         // 执行js 文件(js文件放在src下)
    49         Reader reader = new BufferedReader(
    50                 new InputStreamReader(new FileInputStream("src/test.js")));
    51         engine.eval(reader);
    52         reader.close();
    53     }
    54 }
    重视基础,才能走的更远。
  • 相关阅读:
    转载: RAID详解[RAID0/RAID1/RAID10/RAID5]
    用户交互式命令:read
    linux下fdisk分区管理、文件系统管理、挂载文件系统等
    linux文件系统下的特殊权限
    find命令详解
    python3中 getpass模块使用
    个人shell积累
    手把手教你利用爬虫爬网页(Python代码)
    数通HCIP-ospf知识点
    HCIE之路--超全ospf思维导图
  • 原文地址:https://www.cnblogs.com/xzlf/p/12683473.html
Copyright © 2020-2023  润新知