java - 使用 Java 代码评估 JavaScript

标签 java javascript web

这可能不切实际,但我把它作为一项任务。 我在 java 中有一个打开的 ServerSocket。现在我想读取一个包含 html 和 javascript 的文件,并将 javascript 结果输出到浏览器。所以这样,我将在服务器端评估 javascript。所以我想要里面的东西 待评估。

我试过这个来测试,它有效但它有一些问题,例如它将消息打印到 System.out。和 engine.eval("print('Welocme to java worldddd')");不返回字符串,以便我可以将它输出到套接字的输出流:

import javax.script.*;
// create a script engine manager
ScriptEngineManager factory = new ScriptEngineManager();
// create a JavaScript engine
ScriptEngine engine = factory.getEngineByName("JavaScript");
try {
     // evaluate JavaScript code from String
     engine.eval("print('Welocme to java worldddd')");
     //engine.eval("a");
} catch (ScriptException ex) {
     Logger.getLogger(doComms.class.getName()).log(Level.SEVERE, null, ex);
}

最佳答案

您可以通过在 ScriptContext 上设置编写器来获取脚本的输出(在 JavaScript 中使用 print() 打印的内容):

ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
ScriptContext context = engine.getContext();
StringWriter writer = new StringWriter();
context.setWriter(writer);

engine.eval("print('Welocme to java worldddd')");

String output = writer.toString();

System.out.println("Script output: " + output);

关于java - 使用 Java 代码评估 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15787748/

相关文章:

html - 图像不会与 div 的顶部对齐

java - 合并排序中的交换计数

java - 使用 Java ( android ) 中其他 Activity 的方法

javascript - 如何使用angular js模糊整个页面除了中间的div内容?

web - 流媒体?或者它是什么?

html - 禁用网页的鼠标滚动

java - JFrame 控制台扫描器

java - 是否可以从 close 方法返回 javaFX 中的变量?有没有更有效的方法来做到这一点?

javascript - 检测 DOM 元素的内联/ block 类型

javascript - 从更改时的选择中检索值和数据属性