博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java调用js简单应用
阅读量:6175 次
发布时间:2019-06-21

本文共 2351 字,大约阅读时间需要 7 分钟。

本示例采用了多个js文件,来展示java调用js的效果,jdk采用的1.8版本(貌似1.6以上都支持,未验证)

一、common.js

// 获得当前日期,格式:yyyy年MM月dd日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 + '日';}// 补0操作function addZero(number){    if (number < 10) {        number = '0' + number;    }    return number;}

二、main.js

function sayHello(name){    return name + ' 您好,现在是公元' + getNowDate();}

三、java接口

package com.qfx.interfaces;/** * 
描述:实现与JavaScript通信的接口
* * @author zhangpj 2018年9月6日 */public interface JavaScriptInterface { // 方法名要与JavaScript中存在的函数名相同,这里和main.js中的方法sayHello(name)相同 public String sayHello(String name);}

四、java调用

package com.qfx.test;import java.io.FileReader;import javax.script.Invocable;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;import com.qfx.interfaces.JavaScriptInterface;/** * 
描述:Java调用JavaScript中函数的测试类
* * @author zhangpj 2018年9月6日 */public class ExecuteJavaScript { public static void main(String[] args) { readScriptTest("张三"); } public static void readScriptTest(String param) { 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(); } }}

五、高级应用

参考,js也可以直接调用java

转载于:https://blog.51cto.com/1197822/2171310

你可能感兴趣的文章
LeetCode: Binary Tree Maximum Path Sum
查看>>
QML-开发中遇到的错误收集
查看>>
django_auth模块
查看>>
原生js文字标签云上下滚动播放
查看>>
Linux移植的一般过程
查看>>
WinForm拖动没有标题栏窗体的方法
查看>>
C项目实践--学生成绩管理系统
查看>>
vncserver和Ubuntu Xfce4远程桌面环境的配置,解决不显示图形界面
查看>>
Nginx反向代理proxy
查看>>
JavaScript变量声明
查看>>
C - 你经历过绝望吗?两次! 【地图型BFS+优先队列(障碍物)】
查看>>
C语言基础复习:字符,字符数组,字符串,字符指针
查看>>
linux系统编程视频 百度网盘下载
查看>>
最大间隙问题
查看>>
linux shell 编程基础
查看>>
Sublime Text 3 调用cmd运行c、java、python、batch file
查看>>
《敏捷软件开发》学习笔记 第16章 单例模式和MonoState模式
查看>>
HTML标签img--改变图片尺寸
查看>>
Win10+Centos7 双系统
查看>>
iOS开发 .framework的Optional(弱引用)和Required(强引用)区别, 有错误 Library not found………………...
查看>>