zoukankan      html  css  js  c++  java
  • 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 }
    重视基础,才能走的更远。
  • 相关阅读:
    牛客网暑期ACM多校训练营(第三场)2018 A,PACM Team ( 01背包裸题 )
    牛客网暑期ACM多校训练营(第三场)2018 C , Shuffle Cards ( rope )
    简单的计算几何
    数论基本定理
    HDU-1698 Just a Hook
    HDU-1754 I Hate It ( 线段树入门 + update操作 )
    Base64
    openssl生成RSA非对称密钥---Windows
    AES-对称加密
    DES-对称加密
  • 原文地址:https://www.cnblogs.com/xzlf/p/12683473.html
Copyright © 2011-2022 走看看