java 调用 JavaScript

简介: 可以实现 java 中复杂的算数计算

获得 JavaScript 脚本引擎

ScriptEngineManager scriptEngineManager = new ScriptEngineManager();

ScriptEngine engine = scriptEngineManager.getEngineByName("javascript");

定义获取变量

// 定义变量
engine.put("msg", "this is msg");

// 获取变量
System.out.println(engine.get("msg"));

定义并执行方法

// 定义函数
engine.eval("function add (num1, num2) {return num1 + num2;}");

// engine 该类同样实现了 Invocable 接口 : 转型过去拿到 API
Invocable invocable = (Invocable) engine;

// 调用函数
Object invokeFunction = invocable.invokeFunction("add", new Object[] {10, 10});
System.out.println(invokeFunction);

执行本地 JavaScript 代码

URL resource = JavaScriptDemo.class.getClassLoader().getResource("JavaScriptDemo.js");

FileReader fileReader = new FileReader(resource.getPath());
engine.eval(fileReader);
fileReader.close();

外部 JavaScript 代码

/**
 * 被java调用的外部 JavaScript
 */
function demo() {
    var i = 110;
    var j = 110;
    console.log("this is a i + j : " + (i + j));
}

demo();

执行复杂的算数表达式

Object eval = engine.eval("10 * 10 + 10");
System.out.println(eval);
目录
相关文章
|
7月前
|
Web App开发 JavaScript 前端开发
《手把手教你》系列技巧篇(三十九)-java+ selenium自动化测试-JavaScript的调用执行-上篇(详解教程)
【5月更文挑战第3天】本文介绍了如何在Web自动化测试中使用JavaScript执行器(JavascriptExecutor)来完成Selenium API无法处理的任务。首先,需要将WebDriver转换为JavascriptExecutor对象,然后通过executeScript方法执行JavaScript代码。示例用法包括设置JS代码字符串并调用executeScript。文章提供了两个实战场景:一是当时间插件限制输入时,用JS去除元素的readonly属性;二是处理需滚动才能显示的元素,利用JS滚动页面。还给出了一个滚动到底部的代码示例,并提供了详细步骤和解释。
96 10
|
7月前
|
前端开发 JavaScript Java
Java与JavaScript的区别与联系:有人的地方就有江湖,有浏览器的地方就有JavaScript
Java与JavaScript的区别与联系:有人的地方就有江湖,有浏览器的地方就有JavaScript
386 0
|
4月前
|
JavaScript 前端开发 Oracle
|
4月前
|
JavaScript 前端开发 Java
Java和JavaScript区别与联系
【8月更文挑战第18天】
|
6月前
|
JavaScript 前端开发 Java
java 执行 javascript 代码
java 执行 javascript 代码
38 6
|
7月前
|
JavaScript Java 测试技术
基于springboot+vue.js的基于java的教学辅助平台附带文章和源代码设计说明文档ppt
基于springboot+vue.js的基于java的教学辅助平台附带文章和源代码设计说明文档ppt
48 10
|
6月前
|
算法 JavaScript 前端开发
【经典算法】LCR187:破冰游戏(约瑟夫问题,Java/C/Python3/JavaScript实现含注释说明,Easy)
【经典算法】LCR187:破冰游戏(约瑟夫问题,Java/C/Python3/JavaScript实现含注释说明,Easy)
84 1
|
6月前
|
存储 JavaScript 前端开发
【经典算法】LeetCode350:两个数组的交集 II(Java/C/Python3/JavaScript实现含注释说明,Easy)
【经典算法】LeetCode350:两个数组的交集 II(Java/C/Python3/JavaScript实现含注释说明,Easy)
31 1
|
7月前
|
JavaScript 前端开发 Java
Java和Javascript互调的例子
Java和Javascript互调的例子
41 3
|
6月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的java语言的考试信息报名系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的java语言的考试信息报名系统附带文章源码部署视频讲解等
55 0