脚本宝典收集整理的这篇文章主要介绍了Java知识点总结(动态执行JS代码 ),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
Java知识点总结(动态执行JS代码 )
@(Java知识点总结)[Java, 动态字节码操作]
JDK6.0之后提供了脚本引擎功能,让我们可以执行某些脚本语言,特别是javascript(javascript是一门解释性语言,动态性非常好)。
让JAVA的动态性得到更充分的体现,某些时候可以更加灵活的应对需求的变化。
@H_126_9@脚本引擎介绍: - 使得 Java 应用程序可以通过一套固定的 接口与各种脚本引擎 交互,从而达到在 Java 平台上调用各种脚本语言的目的 。
- Java 脚本 API 是连通 Java 平台和脚本语言 的 桥梁 。
- 可以把一些复杂异变的业务逻辑交给脚本语言处理,这又大大提高了开发效率。
Java 脚本 API 为开发者提供了如下功能:
-
获取脚本程序输入,通过脚本引擎运行脚本并返回运行结果,这是最核心的接口。
- 注意是:接口。 Java可以使用各种不同的实现,从而通用的调用 js 、 groovy 、 python 等脚本。
- 通过 脚本引擎 的运行上下文在脚本和 Java 平台间交换数据。
- 通过 Java 应用程序调用脚本函数。
JS脚本引擎Rhino
Rhino 是一种使用 Java 语言编写的 JavaScript 的开源实现,原先由Mozilla开发,现在被集成进入JDK 6.0。
官方首页
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.Reader; import java.net.URL; import java.util.List; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class Test09 { // 定义变量,存储到引擎上下文中 private static void test1(ScriptEngine engine) { engine.put("msg", "张三是个好学生"); System.out.println(engine.get("msg")); // 获取变量的值 try { engine.eval("msg='java是门好用的语言';"); // 修改变量的值 } catch (ScriptException e1) { e1.printStackTrace(); } System.out.println(engine.get("msg")); } // 定义一个对象 private static void test2(ScriptEngine engine) { String str = "var user = {name:'张三',age:18,subjects:['计算机','英语']};"; str += "println(user.name);"; try { engine.eval(str); } catch (ScriptException e) { e.printStackTrace(); } } // 定义一个函数 private static void test3(ScriptEngine engine) { try { engine.eval("function add(a,b){var sum = a+b;return sum;}"); } catch (ScriptException e) { e.printStackTrace(); } try { // 取得调用接口 Invocable jsInvoke = (Invocable) engine; // 执行脚本中定义的方法 Object result = jsInvoke.invokeFunction("add", new Object[] { 13, 20 }); System.out.println(result); } catch (NoSuchMethodException | ScriptException e) { e.printStackTrace(); } } // 导入其他java包,使用其他包中的java类 private static void test4(ScriptEngine engine) { String jsCode = "importPackage(java.util); var list = Arrays.asList(["浙江大学""
脚本宝典总结
以上是脚本宝典为你收集整理的Java知识点总结(动态执行JS代码 )全部内容,希望文章能够帮你解决Java知识点总结(动态执行JS代码 )所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。