1 概述
本文介绍在 Java 环境中执行 JavaScript 脚本的简单使用,具体包含以下内容
- Java 8 中的内置 Nashorn Javascript 引擎介绍
- Rhino JavaScript 引擎介绍以及对 XML 的处理介绍
2 Java 8 中的内置 Nashorn Javascript 引擎介绍
Nashorn 是 Java 8 中内置的 JavaScript 引擎,无需加入任何依赖。
Nashorn 基本使用步骤如下
- new 出 ScriptEngineManager 对象
- 通过 ScriptEngineManager 对象中的 getEngineByName 方法获取指定的 JavaScript 引擎,返回 ScriptEngine 对象
- Java 8 中的默认的 Javascript 引擎包括:
[nashorn, Nashorn, js, JS, JavaScript, javascript, ECMAScript, ecmascript]
- 通过 ScriptEngine 对象的
eval
方法来执行 JavaScript 脚本。
2.1 通过 PrintWriter 对象获取脚本中的 print 输出
Javascript 脚本中没有函数,没有返回值,通过 print 输出内容,这时需要通过 PrintWriter 获取读取脚本中的 print 输出,具体如下
1 |
|
2.2 获取匿名函数的返回值
Javascript 脚本是一个匿名函数并且有返回值,通过 eval
函数可以直接
1 |
|
2.3 调用 Javascript 脚本中指定的函数
Javascript 脚本中有变量,有多个函数,具体如下
1 |
|
- 输出如下
1 | true |
2.4 读取 Javascript 文件并执行
这种情况是读取 Javascript 文件,并执行,具体如下
- src/test/resources/test.js
1 |
|
文件内容和上面一样。
3 Rhino JavaScript 引擎介绍
默认的 Nashorn 引擎是无法解析 xml 的,像 DOMParser 这样的对象是浏览器内置的组件。
这里可以通过 Maven 依赖 Rhino 引擎来处理 xml。
- Rhino Maven 依赖如下
1 | <dependency> |
使用的步骤和其他 JavaScript 引擎一样,引擎的名称为 Rhino
.
3.1 Rhino 对 xml 的解析
这里通过读取文件的方式来加载和解析 JavaScript 脚本,脚本中是对一段 xml 的解析的过程。
- src/test/resources/xml.js 文件内容如下
1 | print("----------------------------------------"); |
- 执行如下
1 |
|
- 输出如下
1 | xml result = ---------------------------------------- |
3.2 测试
- xml 内容如下
1 | <CCardProcessSyncResponse> |
- 具体测试如下
1 |
|
上面的输出结果如下
1 | xml result = true |