如何使用java获取js文件并执行它然后获得结果

Jus*_*ner 2 javascript java

如何使用java获取位于Web服务器上的js文件,然后执行js文件中的函数并获取结果并在java中使用结果.

你们能给我一些代码片段吗?十分感谢.

Ita*_*man 11

您可以使用Java内置的脚本引擎:

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

public static void main(String[] args) throws Exception {
    ScriptEngineManager mgr = new ScriptEngineManager();
    ScriptEngine engine = mgr.getEngineByName("JavaScript");

    Object result = engine.eval("my-java-script-code") 
    System.out.println("Result returned by Javascript is: " + result);
}
Run Code Online (Sandbox Code Playgroud)

这是一个更详细的例子.


And*_*yle 5

此过程分为三个步骤:

  1. 从服务器获取JS文件。
  2. 从文件中执行一些 JS 函数。
  3. 提取结果。

第一步相当简单,Java 中有很多 HTTP 库可以执行此操作 - 您实际上想要模拟 wget 或 curl 等简单功能。执行此操作的确切方式将根据下一步所需 JS 文件的格式而有所不同,但获取字节流的过程很简单。

第二步需要在 Javascript 引擎中执行 JS。Java 本身无法解释 Javascript,因此您需要获得一个引擎来运行它 - Rhino是对此的常见选择。由于您需要在 Java 之外运行它,因此您可能必须使用ProcessBuilder在 Rhino 中生成一个执行进程。此外,根据 Javascript 的格式,您可能需要创建自己的“包装器”javascript,其功能类似于 Java 中的主类并调用相关方法。

最后,您需要得到结果 - 显然您无法从 Java 程序直接访问 JavaScript 对象。最简单的方法是 JS 程序将结果打印到标准输出(可能会序列化为 JSON 之类的内容,具体取决于对象的复杂性),由于您启动的方式,结果会直接流式传输到您的 Java 应用程序犀牛过程。如果有的话,这可能是 JS 包装脚本的另一项工作。否则,如果 JS 函数具有可观察到的副作用(创建文件/修改数据库),那么您将能够直接从 Java 查询这些副作用。

任务完成。

我希望您意识到这个问题模糊,无法获得完整的答案。要求公众设计一个完整的系统超出了您获得有用、可操作的答复的范围。