Java之在.java文件类中调用js方法

createh55个月前 (02-07)技术教程62

此场景,适用于无Html页面,纯后台调式脚本语言。

首先创建一个js文件,放在resource下的静态文件下

//  供java进行调用
function hello(str) {

    var copeStr = str + " 123";

    return copeStr;

}

然后,创建测试类

public class TestJs {

    //  获取js文件的绝对路径
    private static String jsName = "src/main/resources/static/test.js";

    public static void main(String[] args) {

        try {

            //  todo 初始化 JavaScript 引擎
            ScriptEngineManager manager = new ScriptEngineManager();
            ScriptEngine engine = manager.getEngineByName("javascript");

            engine.eval("load('" + jsName + "');");

            /**
             * 这里我们将 engine 强制转换为 Invocable 类型,使用 invokeFunction 方法将参数传递给脚本引擎。
             * invokeFunction 这个方法使用了可变参数的定义方式,可以一次传递多个参数,并且将脚本语言的返回值作为它的返回值。
             */
            Invocable inv = (Invocable) engine;

            String str = "Hello Js";

            //  将 Java 对象转成 JavaScript 对象
            //Object Java = engine.get("Java");

            //ScriptObjectMirror bytes_som = (ScriptObjectMirror) inv.invokeMethod(Java, "from", str);

            //  进行 js 方法的调用,hello 为 js文件里的方法名
            Object json = inv.invokeFunction("hello",str);

            System.out.printf(json.toString());

        } catch(Exception e) {

            e.printStackTrace();

        }

    }

}

运行测试类,输出:

Hello Js 123

测试成功。

相关文章

Java实现文件上传和下载的方法详解

Java实现文件上传和下载的方法详解,Java实现文件上传和下载解决方案,Java实现文件上传和下载思路,Java实现文件上传和下载源码,Java实现文件上传和下载实例,Java实现文件分块上传和下载...

【Java】基础06:编写入门程序_java编程100例

HelloWorld它的中文意思是:“你好,世界”。仿佛代表着计算机对世界说出来的第一句话,因为它简洁实用,所以被作为入门程序广泛使用。Java程序开发三步骤:编写,编译,运行一、编写即开发人员编写J...

Java文件上传与下载_java文件上传下载项目

1 文件上传1.1 文件上传入门1.1.1 实现文件上传条件1)表单的提交方式必须是POST方式。(才有content-type属性)2)有文件上传表单,表单中有的选择文件的标签3)把表单设置为enc...

SpringBoot实现大文件上传/下载(分片、断点续传)

SpringBoot实现大文件上传/下载(分片、断点续传),SpringBoot实现大文件上传/下载解决方案,SpringBoot实现大文件上传/下载思路,SpringBoot实现大文件上传/下载实例...

2025年Java开发者必读:编写文档的9种姿势

在2025年,Java代码的文档化对于保持项目的可维护性和减少开发团队之间的摩擦至关重要。随着代码库复杂性的增加,文档化确保了知识的共享、新成员的快速入职以及错误的减少。为什么Java代码文档化重要没...