java调用js_java调用js简单应用

本示例采用了多个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();

}

}

}

五、高级应用

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值