JAVA 脚本引擎

Java脚本引擎API  

     实现了java程序和脚本之间的交互,是一类接口,是的java和python ,js等脚本的交互

    Rihno是由第三方实现了JAVA引擎接口是的javascript脚本与java交互

package lili.xidain.script;
 import java.io.FileReader;
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 Demo01 {
 
public static void main(String[] args) throws Exception {
//获得脚本引擎ScriptEngineManager引擎类
ScriptEngineManager sem=new ScriptEngineManager();
//获得接口ScriptEngine 是RhinoScriptEngine类对象该类实现了ScriptEngine接口和Invocable接口
ScriptEngine engine=sem.getEngineByName("javascript");
//定义变量 键值对 存储到引擎的上下文  在java和javascript都可以操作

engine.put("msg", "I'm fine");

                //执行脚本语言 修改msg的值

engine.eval("msg='I\\'m very good';");

                //通过java获取msn的值

                System.out.print(engine.get("msg"));//I'm very good  通过执行  修改值

               ============================================================

String str="var user={name:'wangdongli',age:18,schools:['清华大学','北京大学','西电']};";

               //str中存的就是js代码

str+="println(user.name);";
engine.eval(str); //输出wangdongli  执行了str的脚本

//js是基于函数的脚本语言

//定义js函数
engine.eval("function add(a,b){var sum=a+b;return sum;}");
//取得调用接口 强制转换成Invocable 也实现了这个接口
Invocable jsInvoke=( Invocable) engine;
//执行方法
Object sum=jsInvoke.invokeFunction("add", new Object[]{3,4});

System.out.print(sum);

===================================================

//在js代码中导入java包,使用包中的java类
String jscode="importPackage(java.util); var list=Arrays.asList(['清华大学','北京大学','西电']);";
engine.eval(jscode);
List<String> list2=(List<String>) engine.get("list");
for(String t:list2){
System.out.println(t);

}

===================================================

//执行js文件,像xml,把文件放到项目的src下,然后获取
URL url=Demo01.class.getClassLoader().getResource("a.js");
FileReader reader=new FileReader(url.getPath());
engine.eval( reader);
reader.close();

}


}


  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值