这可能不切实际,但我把它作为一项任务。 我在 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/