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 }

 

posted @ 2014-03-31 11:14  安静的能猫人  阅读(152)  评论(0)    收藏  举报