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);
     }

    }

  • 相关阅读:
    Orchard学习 02、orchard 路由
    Orchard学习 01、orchard日志
    golang限制协程的最大开启数
    go爬取博客园
    go xpath 添加头部解析
    goadmin文档
    使用GoAdmin极速搭建golang应用管理后台
    Python GUI之tkinter窗口视窗教程大集合(看这篇就够了)转
    自定义推荐央视
    python爬虫 xpath
  • 原文地址:https://www.cnblogs.com/songyanlei/p/3386308.html
Copyright © 2011-2022 走看看