在 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 代码的主要内容,如果未能解决你的问题,请参考以下文章

如何在Javascript中生成随机数[重复]

在javascript中生成随机整数的最快方法是啥?

在javascript中生成随机颜色的最佳方法? [关闭]

Javascript - 在单个数组中生成所有元素组合(成对)

在javascript中的画布中生成随机图像

在JavaScript中生成UUID时发生冲突?