Java代码中引入脚本语言例子

很显然这种方法的重点在于开阔思路,目前的项目中并没有使用过。 

Javascript部分——可变的业务由脚本语言构成

function formula(var1, var2){    
    return var1 + var2 * factor;
}

Java部分——在代码中引入脚本,将参数值传递进脚本函数。

import java.io.FileReader;
import java.util.Scanner;

import javax.script.Bindings;
import javax.script.Invocable;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

/** 
* @文件名: GeiJS.java
* @功能描述: 在java中引入js的例子
* @说明:对于经常变化的业务。可以放在脚本语言中 
* @author SunF
* @date 2014-3-31 上午10:56:13 
*  
*/
public class GeiJS {

    public static void main(String[] args) throws Exception {
        //获得一个JavaScript的执行引擎
        ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
        //建立上下文变量
        Bindings bind = engine.createBindings();
        bind.put("factor", 2);
        //绑定上下文,作用域是当前引擎范围
        engine.setBindings(bind, ScriptContext.ENGINE_SCOPE);
        Scanner input = new Scanner(System.in);
        while(input.hasNextInt()){
            int first = input.nextInt();
            int sec = input.nextInt();
            System.out.println("输入的是:"+first+" , "+sec);
            //执行js代码
            engine.eval(new FileReader("src/js/model.js"));  //抛出异常
            //是否可调用方法
            if(engine instanceof Invocable){
                Invocable in = (Invocable)engine;
                //执行js中的函数
                Double result = (Double) in.invokeFunction("formula", first,sec);
                System.out.println("运算结果:" + result);
            }
        }
    }
}


你可能感兴趣的:(java)