当前位置:首页 > Java

java如何操作js

2026-03-22 01:17:23Java

操作 JavaScript 的几种方法

使用 Java 内置的 ScriptEngine

Java 提供了 javax.script 包,可以通过 ScriptEngine 执行 JavaScript 代码。

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class JsExample {
    public static void main(String[] args) {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("JavaScript");

        try {
            engine.eval("var x = 10; var y = 20; var z = x + y;");
            Object result = engine.eval("z");
            System.out.println("Result: " + result); // 输出 30
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }
}

使用 Nashorn 引擎(Java 8-14)

Nashorn 是 Java 8 默认的 JavaScript 引擎,性能优于 Rhino(旧版引擎)。

java如何操作js

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class NashornExample {
    public static void main(String[] args) throws Exception {
        ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
        engine.eval("print('Hello from Nashorn!');");
    }
}

使用 GraalVM 的 JavaScript 引擎(Java 15+)

从 Java 15 开始,Nashorn 被移除,推荐使用 GraalVM 的 JavaScript 引擎。

import org.graalvm.polyglot.Context;

public class GraalJsExample {
    public static void main(String[] args) {
        try (Context context = Context.create("js")) {
            context.eval("js", "console.log('Hello from GraalVM!');");
        }
    }
}

使用第三方库(如 Rhino)

如果需要在较旧版本的 Java 上运行 JavaScript,可以使用 Mozilla 的 Rhino 引擎。

java如何操作js

<!-- Maven 依赖 -->
<dependency>
    <groupId>org.mozilla</groupId>
    <artifactId>rhino</artifactId>
    <version>1.7.14</version>
</dependency>
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;

public class RhinoExample {
    public static void main(String[] args) {
        Context context = Context.enter();
        try {
            Scriptable scope = context.initStandardObjects();
            Object result = context.evaluateString(scope, "3 + 4", "test", 1, null);
            System.out.println("Result: " + Context.toString(result)); // 输出 7
        } finally {
            Context.exit();
        }
    }
}

调用 JavaScript 函数并传递参数

可以在 Java 中调用 JavaScript 函数,并传递参数。

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class CallJsFunction {
    public static void main(String[] args) {
        ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
        try {
            engine.eval("function add(a, b) { return a + b; }");
            Object result = ((javax.script.Invocable) engine).invokeFunction("add", 5, 7);
            System.out.println("Result: " + result); // 输出 12
        } catch (ScriptException | NoSuchMethodException e) {
            e.printStackTrace();
        }
    }
}

使用 Selenium 操作浏览器 JavaScript

如果需要在浏览器中执行 JavaScript,可以使用 Selenium WebDriver。

import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class SeleniumJsExample {
    public static void main(String[] args) {
        WebDriver driver = new ChromeDriver();
        driver.get("https://example.com");

        JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript("alert('Hello from Selenium!');");

        driver.quit();
    }
}

注意事项

  • 安全性:执行外部 JavaScript 时需注意代码注入风险。
  • 性能ScriptEngine 适用于简单脚本,复杂逻辑建议使用 Node.js 或其他专业引擎。
  • 兼容性:Java 15+ 需使用 GraalVM 替代 Nashorn。

标签: 操作java
分享给朋友:

相关文章

vue 实现选题操作

vue 实现选题操作

实现选题操作的基本思路 在Vue中实现选题操作通常涉及以下核心逻辑:维护一个数据数组存储选项,通过v-model或自定义事件绑定用户选择,动态更新选中状态。常见场景包括单选、多选、全选/反选等。 单…

如何学java

如何学java

学习Java的基础知识 Java是一门面向对象的编程语言,掌握基础语法是入门的关键。需要了解变量、数据类型、运算符、控制结构(如if-else、for循环、while循环)、数组等概念。可以通过官方文…

java如何自学

java如何自学

确定学习目标和路径 自学Java需要明确目标,例如开发Web应用、Android应用或后端服务。根据目标选择学习重点,如Java基础、Spring框架或Android开发。制定阶段性计划,从基础语法到…

如何编译java文件

如何编译java文件

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证。若未安装,需从Oracle或Open…

java如何输入字符串

java如何输入字符串

使用 Scanner 类 在 Java 中,可以通过 java.util.Scanner 类来输入字符串。以下是一个示例代码: import java.util.Scanner; public c…

java如何连接mysql

java如何连接mysql

连接 MySQL 数据库的基本步骤 添加 MySQL 驱动依赖 在项目中引入 MySQL 的 JDBC 驱动。如果使用 Maven,在 pom.xml 中添加以下依赖: <dependency…