1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java 脚本引擎执行脚本 例如js python等脚本语言

java 脚本引擎执行脚本 例如js python等脚本语言

时间:2022-12-22 07:09:01

相关推荐

java 脚本引擎执行脚本 例如js python等脚本语言

JAVA脚本引擎是从JDK6.0之后添加的新功能。

脚本引擎介绍:

– 使得 Java 应用程序可以通过一套固定的接口与各种脚本引擎交互,从 而达到在 Java 平台上调用各种脚本语言的目的。

– Java 脚本 API 是连通 Java 平台和脚本语言的桥梁。

– 可以把一些复杂异变的业务逻辑交给脚本语言处理,这又大大提高了 开发效率。

获得脚本引擎对象

//获得脚本引擎对象ScriptEngineManager sem = new ScriptEngineManager();ScriptEngine engine = sem.getEngineByName("javascript");

import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import .URL;import java.util.List;import javax.script.Invocable;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;import javax.script.ScriptException;public class Demo03 {public static void main(String[] args) throws ScriptException, NoSuchMethodException, IOException {//获得脚本引擎对象ScriptEngineManager sem = new ScriptEngineManager();ScriptEngine engine = sem.getEngineByName("javascript");////定义变量,存储到引擎的上下文找那个engine.put("msg", "hello");String str = "var user = {name:'john',age:19,school:['交通大学','北京大学']};";str += "print(user.name);";//执行脚本engine.eval(str);//打印johnengine.eval("msg = 'goodbye'");//用js修改msgSystem.out.println(engine.get("msg"));//用java获取msg的值System.out.println("======================================");//定义函数engine.eval("function add(a,b){var sum = a + b;return sum;}");//取得调用接口Invocable invocable = (Invocable) engine;//执行脚本中的方法Object result2 = invocable.invokeFunction("add", new Object[] {1,2});//第一参数是函数名,第二个是函数的参数System.out.println(result2);//返回3.0//导入其他的java 使用其他包中的java类String jsCode = "var list = java.util.Arrays.asList([\"john\",\"marry\",\"wang\"])";engine.eval(jsCode);List<String> list2 = (List<String>)engine.get("list");for (String string : list2) {System.out.println(string);}//执行js文件URL url = Demo03.class.getClassLoader().getResource("a.js");//在项目的bin目录下FileReader fr = new FileReader(url.getPath());engine.eval(fr);fr.close();}}

johngoodbye======================================3.0johnmarrywanginvoke js file:7

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。