概述:
JDK6.0中对Script语言的支持,默认支持javascript,从而使得开发变的简洁,适用场景如下:
有个业务逻辑处理,需要根据提供的工资,然后计算出应缴的税,2009年假定为(工资-800)*20%为上缴的税
采用java实现的方式如下:
public double geTax(double salary){ Return (salary-800)*0.2; }
到2010年发生了变化,变为(工资-2000)*20%为上缴的税
修改代码,重启服务,代码如下:
public double geTax(double salary){ Return (salary-3000)*0.2; }
然后又发生了变化......,
针对此类可以通过javascript进行实现,从而实现热部署。
调用脚本步骤:
Step1.创建ScriptEngineManager
ScriptEngineManager sem = new ScriptEngineManager();
Step2.根据ScriptEngineManager创建ScriptEngine
ScriptEngine engine = sem.getEngineByName("ECMAScript");
Step3.通过ScriptEngine加载脚本
engine.eval(scriptStr);
Step4.脚本的调用执行
//执行方法的采用Invocable
//执行内置对象的需要先获取内置对象然后调用callMethod进行执行
调用脚本中的对象方法:
定义脚本如下:F:\script\oo.js
function Person(name) { this.name = name; }; Person.prototype.say = function(str) { return this.name+" can say :"+str; };
Java中调用:
String filepath = "F:/script/oo.js"; File file = new File(filepath); FileReader scriptReader = new FileReader(file); ScriptEngineManager sem = new ScriptEngineManager();// ScriptEngine engine = sem.getEngineByName("ECMAScript"); engine.eval(scriptReader); Invocable inv = (Invocable) engine; Object obj = inv.invokeMethod(engine.eval("new Person('baidu');"), "say", "www.someabcd.com 是个好网站!"); System.out.println(obj);
调用脚本中的方法:
1.定义脚本如下:
F:\script\fun.js function getMax(a, b){ return a>b?a:b; }
2.Java中调用:
String filepath = "F:/script/fn.js"; File file = new File(filepath); FileReader scriptReader = new FileReader(file); ScriptEngineManager sem = new ScriptEngineManager();// ScriptEngine engine = sem.getEngineByName("ECMAScript"); engine.eval(scriptReader); Invocable inv = (Invocable) engine; Object obj = inv.invokeFunction("getMax", 100, 101); System.out.println(String.format("the max value is:%s", obj));
调用脚本中的内置对象:
1.定义脚本如下: F:\script\reg_exp.js
var reg = new RegExp("a+b");
2.Java中调用:
String filepath = "F:/script/reg_exp.js"; File file = new File(filepath); FileReader scriptReader = new FileReader(file); ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine engine = sem.getEngineByName("ECMAScript"); engine.eval(scriptReader); NativeRegExp nre = (NativeRegExp) engine.get("reg"); String input = "aaaaaaaaaaaab"; Object result = NativeRegExp.callMethod(nre, "test", new Object[] {input }); System.out.println(String.format("call regular expression:%s input:%s output :%s", nre.toString(), input, result));
相关推荐
中文版的JDK,能让你更加清楚的知道如何运用API,能更加方便你的查询。
最全 JDK6.0 API 文档,最全 JDK6.0 API 文档。
jdk 6.0 API Document 文档,jdk 6.0 API Document 文档,jdk 6.0 API Document 文档,jdk 6.0 API Document 文档,jdk 6.0 API Document 文档,jdk 6.0 API Document 文档
安装和配置jdk6.0和tomcat6.0
JDK6.0的安装与配置
JDK jdk6.0环境变量设置.pdf
JDK 6.0 Documentation 中文文档 CHM 从网上找到的,如果不对请见谅哈,小弟不敢独享,初来乍到,大家多包涵
jdk6.0中文版jdk。不错的开发者文档!希望你能喜欢!
JDK 6.0 Documentation 中文文档 CHM 从网上找到的,如果不对请见谅哈,小弟不敢独享,初来乍到,大家多包涵
JDK6.0 中文文档JDK6.0 中文文档JDK6.0 中文文档JDK6.0 中文文档JDK6.0 中文文档JDK6.0 中文文档JDK6.0 中文文档
最新的Java JDK6.0课件及源代码,初学Java的朋友不要错过
JDK 6.0 API 中文版 开发新手的必备 , 绝对完美的中文版
深入浅出JDK6.0光盘内容 从Java语言的特点、语法、开发环境入手
JDK 6 0 zip 欢迎下载 JDK 6 0 zip 欢迎下载 JDK 6 0 zip 欢迎下载
JDK6.0 官方 中文 api chm
JDK6.0 API官方中文版CHM格式手册,居家旅行,开发学习必备良品,一册在手,开发无忧啊!
JDK 6.0 Documentation 中文文档 CHM 从网上找到的,如果不对请见谅哈,小弟不敢独享,初来乍到,大家多包涵
java6.0文档chm版,分成三部分,分别为JDK6.0+中文文档-lytim24.part1.rar、JDK6.0+中文文档-lytim24.part2.rar、JDK6.0+中文文档-lytim24.part3.rar
联网装jdk6.0直接点安装