在 Java 应用程序中生成 JavaScript 代码
Posted
技术标签:
【中文标题】在 Java 应用程序中生成 JavaScript 代码【英文标题】:Generate JavaScript code in a Java application 【发布时间】:2020-03-20 14:09:18 【问题描述】:我见过类似的问题,但不一样。 我有一个发送 get 和 post 请求的 java 应用程序。现在的问题是请求需要有一个 CSRTF 令牌,我无法从 ReasteastClient.getcookies 方法获得,所以我编写了一个 javascript 代码来获取这个令牌。我正在尝试从我的 java 应用程序生成 JavaScript 代码并获取函数响应。
有什么办法吗?? 谢谢大家。
【问题讨论】:
是哪种应用程序? REST 服务的种类? 我们是在谈论服务还是 jsp/jsf/...? 是的,一个 REST 服务 欢迎来到 Stack Overflow! *** 不是免费的编码服务。您应该尝试solve the problem first。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :) 【参考方案1】:要在 Java 中生成 JavaScript 代码,您需要按照以下步骤操作
1.创建您的 JavaScript 文件并添加检索 CSRTF TOKEN 的函数
通过添加功能:
$.get('CSRFTokenManager.do', function(data)
var send = XMLHttpRequest.prototype.send,
token =data;
document.cookie='X-CSRF-Token='+token;
XMLHttpRequest.prototype.send = function(data)
this.setRequestHeader('X-CSRF-Token',token);
//dojo.cookie("X-CSRF-Token", "");
return send.apply(this, arguments);
;
);
2.将其保存为 Jsfunctions.js 并在您的 java 代码中使用它,如下所示。
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
// read script file
engine.eval(Files.newBufferedReader(Paths.get("C:/Scripts/Jsfunctions.js"),
StandardCharsets.UTF_8));
Invocable inv = (Invocable) engine;
// call function from script file
inv.invokeFunction("yourFunction", "param");
希望这会有所帮助..!
【讨论】:
非常感谢!这里应该做什么: inv.invokeFunction("yourFunction", "param"); ?以上是关于在 Java 应用程序中生成 JavaScript 代码的主要内容,如果未能解决你的问题,请参考以下文章