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); }
728x90
반응형