1. 简单调用
1 /** 2 * simple,默认java.*包中的API已经倒入到engine中。你可以使用那些API 3 * @throws Exception 4 */ 5 private static void invoke1() throws Exception{ 6 ScriptEngineManager engineManager = new ScriptEngineManager(); 7 ScriptEngine engine = engineManager.getEngineByName("javascript"); 8 //根据“脚本语言名称”获取执行引擎,java本身默认只支持javascript,对于其他脚本,可以 9 //使用第三方包(apache bsf,不过不是很好用) 10 //getEngineByName方法每次都会创建一个心的Engine对象 11 //java.lang包默认已经导入 12 String script = "var message = 'This is javascript.';println(message);var total = 2;"; 13 engine.eval(script); 14 Double total = (Double)engine.get("total"); 15 System.out.println(total); 16 }
2. 向JS脚本传递参数

1 /** 2 * 向当前engine调用中put参数,并交给script 3 * @throws Exception 4 */ 5 private static void invoke2() throws Exception{ 6 ScriptEngineManager engineManager = new ScriptEngineManager(); 7 ScriptEngine engine = engineManager.getEngineByName("javascript"); 8 String script = "for(var i=0;i< times;i++) {println(i);}"; 9 engine.put("times", 10); 10 engine.eval(script); 11 }
3. 在JS中使用java对象的方法或属性
1 private static void invoke3() throws Exception{ 2 ScriptEngineManager engineManager = new ScriptEngineManager(); 3 ScriptEngine engine = engineManager.getEngineByName("javascript"); 4 String script = "println(string + ',length:' + string.length);"; 5 engine.put("string", "javascript"); 6 engine.eval(script); 7 }