java调用js简单应用
2021-07-05 08:04
标签:调用 教程 tst 方法 package manager oid 当前日期 文件的 本示例采用了多个js文件,来展示java调用js的效果,jdk采用的1.8版本(貌似1.6以上都支持,未验证) // 获得当前日期,格式:yyyy年MM月dd日 // 补0操作 function sayHello(name){ package com.qfx.interfaces; /** package com.qfx.test; import java.io.FileReader; /** @author zhangpj 2018年9月6日 public static void main(String[] args) { public static void readScriptTest(String param) { } 参考Java8Nashorn教程,js也可以直接调用java java调用js简单应用 标签:调用 教程 tst 方法 package manager oid 当前日期 文件的 原文地址:http://blog.51cto.com/1197822/2171310一、common.js
function getNowDate() {
var date = new Date();
var y = date.getFullYear();
var m = addZero(date.getMonth() + 1);// 获取当前月份的日期
var d = addZero(date.getDate());
return y + "年" + m + "月" + d + ‘日‘;
}
function addZero(number){
if (number number = ‘0‘ + number;
}
return number;
}二、main.js
return name + ‘ 您好,现在是公元‘ + getNowDate();
}三、java接口
描述:实现与JavaScript通信的接口
*/
public interface JavaScriptInterface {
// 方法名要与JavaScript中存在的函数名相同,这里和main.js中的方法sayHello(name)相同
public String sayHello(String name);
}四、java调用
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import com.qfx.interfaces.JavaScriptInterface;
描述:Java调用JavaScript中函数的测试类
*/
public class ExecuteJavaScript {
readScriptTest("张三");
}
ScriptEngineManager manager = new ScriptEngineManager();
// 1.获取一个JavaScript 引擎实例
ScriptEngine engine = manager.getEngineByName("JavaScript"); try {
// 2.获取文件路径
String path = Thread.currentThread().getContextClassLoader()
.getResource("").getPath();
// System.out.println(path);
// 3.执行js脚本,FileReader的参数为所要执行的js文件的路径
engine.eval(new FileReader(path + "../static/js/dateUtil.js"));
engine.eval(new FileReader(path + "../static/js/main.js"));
// 4.验证engine是否属于Invocable的实例
if (engine instanceof Invocable) {
Invocable invocable = (Invocable) engine;
// 5.从脚本引擎中获取JavaScriptInterface接口对象
JavaScriptInterface executeMethod = invocable
.getInterface(JavaScriptInterface.class);
// 6.调用这个js接口(会去调用js中的相匹配名称的函数)
String info = executeMethod.sayHello(param);
System.out.println(info);
}
} catch (Exception e) {
e.printStackTrace();
}
}五、高级应用