본문 바로가기
Developer/Java

[Java] Java에서 Javascript를 호출

by 순수한소년 2017. 1. 30.
728x90
반응형
package egovframework.rte.kr.go.test;

import java.io.FileNotFoundException;
import java.io.FileReader;

import javax.script.Compilable;
import javax.script.CompiledScript;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class JavaScriptRunner {

	// JavaScript에서 호출되는 메소드
	public void sayHello(String name) {
		System.out.println("Hello " + name);
	}

	public static void main(String[] args) throws ScriptException, FileNotFoundException, NoSuchMethodException {

		// JavaScript를 호출
		// JavaScript의 ScriptEngine을 구함
		ScriptEngineManager sem = new ScriptEngineManager();
		ScriptEngine se = sem.getEngineByName("JavaScript");
		// eval 함수로 평가. JavaScript를 실행
		se.eval("print('JavaScript is running')");

		// JavaScript를 커파일하여 실행함
		Compilable compilable = (Compilable) se;
		CompiledScript cs = compilable.compile("print('JavaScript is compiled')");
		cs.eval();

		// Java에서 JavaScript를 호출
		// addtion.js로부터 함수를 읽어 인수를 전달해 실행
		se.eval(new FileReader("src/main/java/egovframework/rte/kr/go/test/addition.js"));
		// Java에서 호출 결과는 3
		((Invocable) se).invokeFunction("add", 1, 2);

		// JavaScript로부터 Java의 메소드를 호출
		se.put("jsr", new JavaScriptRunner());
		se.eval("jsr.sayHello('World')");

	}

}
function add(a,b) { print(a+b); }

반응형