java中引入脚本语言例子
对于易变业务,可以将其内容放在脚本中。
修改脚本中的业务代码,不需要重启JVM,可以随时发布而不用重新部署。
function formula(var1, var2){ return var1 + var2 * factor; }
保存为model.js
1 import java.io.FileReader; 2 import java.util.Scanner; 3 4 import javax.script.Bindings; 5 import javax.script.Invocable; 6 import javax.script.ScriptContext; 7 import javax.script.ScriptEngine; 8 import javax.script.ScriptEngineManager; 9 10 /** 11 * @文件名: GeiJS.java 12 * @功能描述: 在java中引入js的例子 13 * @说明:对于经常变化的业务。可以放在脚本语言中 14 * @author SunF 15 * @date 2014-3-31 上午10:56:13 16 * 17 */ 18 public class GeiJS { 19 20 public static void main(String[] args) throws Exception { 21 //获得一个JavaScript的执行引擎 22 ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript"); 23 //建立上下文变量 24 Bindings bind = engine.createBindings(); 25 bind.put("factor", 2); 26 //绑定上下文,作用域是当前引擎范围 27 engine.setBindings(bind, ScriptContext.ENGINE_SCOPE); 28 Scanner input = new Scanner(System.in); 29 while(input.hasNextInt()){ 30 int first = input.nextInt(); 31 int sec = input.nextInt(); 32 System.out.println("输入的是:"+first+" , "+sec); 33 //执行js代码 34 engine.eval(new FileReader("src/js/model.js")); //抛出异常 35 //是否可调用方法 36 if(engine instanceof Invocable){ 37 Invocable in = (Invocable)engine; 38 //执行js中的函数 39 Double result = (Double) in.invokeFunction("formula", first,sec); 40 System.out.println("运算结果:" + result); 41 } 42 } 43 } 44 }

浙公网安备 33010602011771号