>  기사  >  웹 프론트엔드  >  자바에서 자바스크립트를 호출하는 방법

자바에서 자바스크립트를 호출하는 방법

PHPz
PHPz원래의
2023-04-24 10:47:262854검색

웹 애플리케이션을 개발할 때 Java 백엔드 코드에서 JavaScript 코드를 호출해야 하는 경우가 있습니다. 이 경우 Java의 스크립팅 엔진을 사용하여 JavaScript 코드를 실행할 수 있습니다. 이 기사에서는 Java에서 JavaScript를 호출하는 방법을 소개합니다.

  1. 스크립팅 엔진 라이브러리 소개

Rhino, Nashorn 등 Java에서 사용할 수 있는 스크립팅 엔진이 많이 있습니다. 이 기사에서는 Nashorn을 예로 들어 보겠습니다.

Java에서 Nashorn을 사용하려면 프로젝트에 Nashorn 라이브러리를 도입해야 합니다. Maven을 사용하여 빌드하는 경우 pom.xml에 다음 종속성을 추가하면 됩니다. 다음은 간단한 JavaScript 예입니다.

<dependency>
   <groupId>org.openjdk.nashorn</groupId>
   <artifactId>nashorn-core</artifactId>
   <version>1.8.0_25</version>
</dependency>
    코드는 두 개의 인수를 추가하고 결과를 반환하는 계산이라는 함수를 정의합니다.
Java에서 JavaScript 코드 호출

스크립트 엔진을 통해 JavaScript 파일 로드, JavaScript 문자열 실행 등 Java에서 JavaScript 코드를 호출하는 방법은 다양합니다. 다음은 몇 가지 샘플 코드입니다:

    3.1. 스크립트 엔진을 통해 JavaScript 파일 로드
  1. Java에서는 스크립트 엔진을 통해 JavaScript 파일을 로드하고 그 안에 있는 코드를 실행할 수 있습니다. 다음은 샘플 코드입니다.
var calculate = function(a, b) {
   return a + b;
}

이 코드에서는 먼저 ScriptEngineManager를 사용하여 JavaScript 스크립트 엔진을 만듭니다. 그런 다음 JavaScript 파일을 로드하고 eval 메서드를 호출하여 해당 파일의 코드를 실행합니다. 다음으로 Invocable 객체를 생성하고 해당 InvokeFunction 메서드를 호출하여 JavaScript 함수를 호출합니다. 마지막으로 함수의 결과를 인쇄합니다.

3.2. JavaScript 문자열 실행

파일을 로드하여 JavaScript 코드를 호출하는 것 외에도 JavaScript 문자열을 실행하여 코드를 호출할 수도 있습니다. 다음은 샘플 코드입니다.

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
engine.eval(new FileReader("path/to/javascript/file.js"));
Invocable invocable = (Invocable) engine;
Object result = invocable.invokeFunction("calculate", 1, 2);
System.out.println(result);

이 코드에서는 계산이라는 함수의 정의가 포함된 JavaScript 문자열이 먼저 정의됩니다. 그런 다음 JavaScript 스크립트 엔진을 만들고 eval 메서드를 호출하여 이 문자열을 실행합니다. 마지막으로 호출Function 메서드를 다시 호출하여 함수를 호출합니다.

요약

이 문서에서는 Java에서 JavaScript 코드를 호출하는 방법을 설명합니다. JavaScript 코드는 Java의 Nashorn 스크립팅 엔진을 사용하여 Java 코드에서 쉽게 실행할 수 있습니다. 이 기능을 통해 웹 개발자는 프런트엔드 및 백엔드 로직을 동일한 애플리케이션에 보다 쉽게 ​​통합할 수 있습니다.

위 내용은 자바에서 자바스크립트를 호출하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.