zoukankan      html  css  js  c++  java
  • java 调用javascript

    首先我们在D盘的根目录下有一个js文件 名叫 common.js 假设里面有一个这样的方法

    /**
     * @param int
     *            _number 你想要的最大值
     * @param boolean
     *            是否从0开始
     * @param int
     *            需要选择个数
     * @param boolean是否可以有重复值
     * @return String 如_radom(33,false,6,false)返回值可能是 5 22 33 12 7 9
     */
    function __random(_number, isStartBy0, _nums, theSame) {
     var nums = [];
     var count = nums.length;
     var str = "";
     var flag = false;

     for ( var i = 0; i < _nums; i++) {
      if (isStartBy0)
       var idx = Math.floor(Math.random() * (_number + 1));
      else
       var idx = Math.floor(Math.random() * _number + 1);
      // 1 / 0 - _number
      if (theSame) {
       nums[nums.length] = idx;
       str += nums[i] + " ";
      } else {
       if (nums.length == 0) {
        nums[0] = idx;
        str += nums[0] + " ";
       } else {
        for ( var j = 0; j < nums.length; j++) {
         if (idx == nums[j]) {
          flag = true;
          i = nums.length - 1;
          break;
         }
        }
        if (!flag) {
         nums[i] = idx;
         str += nums[i] + " ";
        }
       }
       flag = false;
      }
     }
     return str;
    }

    如果我们需要在java中调用这段代码

    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;

    import javax.script.Invocable;
    import javax.script.ScriptEngine;
    import javax.script.ScriptEngineManager;

    public class TestScript {
     public static void main(String[] args) throws Exception {

      // 创建一个 ScriptEngineManager
      ScriptEngineManager m = new ScriptEngineManager();
      // 得到javascript引擎
      ScriptEngine engine = m.getEngineByName("js");
      // 绑定引擎
      engine.put("engine", engine);

      // 执行script代码 调用下面的方法
      TestScript.eval(engine, "d://common.js");

     }

     private static void eval(ScriptEngine engine, String name) throws Exception {
      // InputStream is = TestScript.class.getResourceAsStream("/resources/" +
      // name);
      InputStream is = new FileInputStream(name);

      // 这一句是为了更好的错误消息输出
      // engine.put(ScriptEngine.NAME, name);

      // 执行io流中的javascript代码
      engine.eval(new InputStreamReader(is));
      Invocable inv = (Invocable) engine;
      // 执行方法并传递参数
      // _number, isStartBy0, _nums, theSame
      Object[] c = { 33, false, 6, false };
      Object obj = inv.invokeFunction("__random", c);
      // 打印结果
      System.out.println(obj);
     }

    }

  • 相关阅读:
    Python 学习笔记 11.模块(Module)
    Python 学习笔记 8.引用(Reference)
    Python 学习笔记 9.函数(Function)
    Python 学习笔记 6.List和Tuple
    Python 学习笔记 4.if 表达式
    Python 学习笔记 2.自省
    Python 学习笔记 3.简单类型
    Python 学习笔记 7.Dictionary
    Python 学习笔记 5.对象驻留
    Python 学习笔记 10.类(Class)
  • 原文地址:https://www.cnblogs.com/songyanlei/p/3386308.html
Copyright © 2011-2022 走看看