利用脚本语言编写易变的业务逻辑
2014-08-21 10:26
337 查看
在开发的过程中,我们常常遇到一些需要更新代码,但是不能重启服务器的需求。这种自动更新的方式,一般可以使用脚本来解决。
本次实例主要是利用js脚本语言实践。
首先编写js代码:
function test(var1,var2){
return var1+var2+params;
}
package local;
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;
public class TestJavaScript {
public static void main(String[] args) throws Exception {
//创建一个js执行引擎
ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
Bindings bind = engine.createBindings();
//建立上下文
bind.put("params", 100);
engine.setBindings(bind, ScriptContext.ENGINE_SCOPE);
Scanner scanner = new Scanner(System.in);
while(scanner.hasNextInt()){
int first = scanner.nextInt();
int sec = scanner.nextInt();
System.out.println("输入参数是:"+first +","+sec);
engine.eval(new FileReader("D://demo.js"));
if(engine instanceof Invocable){
Invocable in = (Invocable)engine;
Double reDouble = (Double) in.invokeFunction("test", first,sec);
System.out.println("运算结果:"+reDouble.intValue());
}
}
}
}
本次实例主要是利用js脚本语言实践。
首先编写js代码:
function test(var1,var2){
return var1+var2+params;
}
package local;
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;
public class TestJavaScript {
public static void main(String[] args) throws Exception {
//创建一个js执行引擎
ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
Bindings bind = engine.createBindings();
//建立上下文
bind.put("params", 100);
engine.setBindings(bind, ScriptContext.ENGINE_SCOPE);
Scanner scanner = new Scanner(System.in);
while(scanner.hasNextInt()){
int first = scanner.nextInt();
int sec = scanner.nextInt();
System.out.println("输入参数是:"+first +","+sec);
engine.eval(new FileReader("D://demo.js"));
if(engine instanceof Invocable){
Invocable in = (Invocable)engine;
Double reDouble = (Double) in.invokeFunction("test", first,sec);
System.out.println("运算结果:"+reDouble.intValue());
}
}
}
}
结果显示: 100 100 输入参数是:100,100 运算结果:300如果功能上需要更改公式的计算方式,只需要更改demo.js文件即可,并不需要停掉服务。
相关文章推荐
- 易变业务使用脚本语言编写
- [改善Java代码]易变业务使用脚本语言编写
- 易变业务使用脚本语言编写
- Java之戳中痛点 - (1)易变业务使用脚本语言编写
- Java之戳中痛点 - (3)三目运算符的两个操作数类型尽量一致 Java之戳中痛点 - (4)i++ 和 ++i 探究原理 Java之戳中痛点 - (1)易变业务使用脚本语言编写 Java之戳中痛点 - (2)取余用偶判断,不要用奇判断 (5)switch语句break不能忘以及default不同位置的用法 Java之戳中痛点 - (7)善用Java整型缓存池
- InstallShield脚本语言的编写
- 如何利用OutLook漏洞编写病毒脚本
- 业务逻辑架构模式(事务脚本,表模块,活动记录,领域模型)
- 利用Source Insight宏语言脚本添加注释
- java平台的脚本语言可以利用起来了 2
- LoadRunner利用ODBC编写MySql脚本
- 利用NetScaler和自行编写的健康检查脚本,完美解决多台MySQL Slave数据库的负载均衡
- 实现业务逻辑的几种不同方法,及其优缺点 事务脚本、表模块、活动记录、领域模型
- InstallShield脚本语言的编写
- 利用.NET语言开发自己的脚本语言(一)
- 利用Lua脚本语言制作魔兽WOW插件
- 利用netsh编写网卡动态配置的脚本
- 编写存储过程将数据库中表中数据转换sql脚本语言
- 利用shell或其他脚本语言在Apache下写CGI
- java平台的脚本语言可以利用起来了 1