Java 调用js接口

1、创建一个接口

/**
 * 创建一个对接JavaScript的接口,接口中的方法与JavaScript中的方法对应
 */
public interface JavaScriptInterface {
    public String getToken();
}

2、访问js接口

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import java.io.FileReader;

/**
 * Created by xxx on 2023-11-06.
 */
public class JsDemo {

    public static void main(String[] args) {
        String str = "";
        // 1.创建一个JavaScript引擎
        ScriptEngineManager manager = new ScriptEngineManager();

        // 2.获取一个指定的名称的JavaScript引擎实例
        ScriptEngine engine = manager.getEngineByName("JavaScript");
        // ScriptEngine engine = manager.getEngineByName("js");

        try {
            // 3.获取文件路径
            String path = Thread.currentThread().getContextClassLoader().getResource("").getPath();

            // 4.加载要执行的js文件(可多个),FileReader的参数为所要执行的js文件的路径(如果是.jar格式,建议文件与.jar分离,采用绝对路径)
            engine.eval(new FileReader(path + "js/abc.js"));

            if (engine instanceof Invocable) {
                // 5.从脚本引擎中返回一个给定接口的实现
                Invocable invocable = (Invocable) engine;

                // 从脚本引擎中获取JavaScriptInterface接口对象(实例). 该接口方法由具有相匹配名称的脚本函数实现。
                JavaScriptInterface executeMethod = invocable.getInterface(JavaScriptInterface.class);
                // 调用这个js接口
                str = executeMethod.getToken();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        System.out.println(str);
    }
}

 

posted @ 2023-11-07 14:28  都是城市惹的祸  阅读(121)  评论(0)    收藏  举报