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

createh53个月前 (02-07)技术教程24

此场景,适用于无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超简单系列课程——使用记事本写一个java程序

下一个知识点来讲如何使用记事本来开发一个java程序。先分为几个步骤。·第一个步骤先是编码过程。·第二个步骤要经过编译。编译就是把写的java代码,程序员能看懂的java代码翻译成电脑系统能够看懂的j...

java如何高效地读取一个超大文件?(四种方式分析对比)

前言我最近在优化我的PDF转word的开源小工具,有时候会遇到一个问题,就是如果我的PDF文件比较大,几百兆,如何更快更节省内存的读取它。于是我分析对比了四种常见的读取文件的方式,并使用javaVis...

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

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

Java文件操作和IO_java实现文件操作

1.认识文件我们先来认识狭义上的文件(file)。针对硬盘这种持久化存储的I/O设备,当我们想要进行数据保存时, 往往不是保存成一个整体,而是独立成一个个的单位进行保存,这个独立的单位就被抽象成文件的...