js脚本引擎

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

//定义变量,存储到引擎上下文中,java,js都可以获取
String str = "var user = {name:'张三',age:20,schools:['清华大学','北京大学']};" ;
str += "print(user.name);"; //此处用println会报错,受JDK版本影响

 //执行脚本
 engine.eval(str);-->张三

//脚本可以被Java操作
engine.put("msg", "good  boy!");
engine.eval("msg = 'good girl!';");
System.out.println(engine.get("msg"));--->good girl!

//定义函数
engine.eval("function add (a,b){var sum = a + b;return sum;}");
//取得调用接口
Invocable jsInvocalbe = (Invocable) engine;
//执行脚本中定义的方法
Object result = jsInvocalbe.invokeFunction("add", new Object [] {11,22}) ;
System.out.println(result);-->33.0

//导入其它java包,使用其他包中的java类
  //String jsCode = "ImportPackage (java.util);var list = Arrays.asList([\"清华大学\",\"北京大学\"]);"; ---JDK1.6版本写法
  String jsCode = "var list = java.util.Arrays.asList([\"清华大学\",\"北京大学\"]);";                                ---JDK1.8版本写法
  engine.eval(jsCode);
  
  List<String> list2 = (List<String>)engine.get("list");
  for(String temp:list2) {
   System.out.println(temp);--->遍历结果为清华大学,北京大学
  }

//执行一个js文件--将a.js文件放在src下即可
  URL url = (类名).class.getClassLoader().getResource("js文件名");
  FileReader fr = new FileReader(url.getPath());
  engine.eval(fr);
  fr.close();//try-catch块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值