脚本引擎执行js代码

一.介绍

1.是jdk6.0以后的新增的功能

2.使得java程序通过一套固定的接口与各种脚本引擎交互,使可以在java平台可以调用各种脚本语言

3.把一些复杂异变的业务逻辑交给脚本语言去处理,提高效率

二.

@Test
	public void test1() throws ScriptException, NoSuchMethodException, FileNotFoundException {
		//获得脚本引擎对象
		ScriptEngineManager manager=new ScriptEngineManager();
		ScriptEngine engine=manager.getEngineByName("js");
		
		//定义变量存储到引擎上下文,则该变量在java/js中都能获取
		engine.put("value", 1);           
		engine.eval("value=2;");    //js代码改变value值
		System.out.println(engine.get("value"));    //java代码打印value值
		
		
		//执行js代码
		String s="var user= {name:'hwx', age:18};";
		s+="print(user.name);";
		engine.eval(s);
		
		//定义js函数
		engine.eval("function add(a,b){var sum=a+b;return sum;};");
		//执行js函数
		Invocable invoke=(Invocable)engine;
		double x=(double)invoke.invokeFunction("add",1,2);   //参数为函数名,Object可变参数
		System.out.println(x);
		
		//导入其他java包,使用其他包中Java类
		s="importPackage(java.util); var list=Arrays.asList([1,2,3]);";
		engine.eval(s);
		List<Integer> list=(List<Integer>)engine.get("list");
		System.out.println(list);
		
		
		//执行一个js文件
		URL url=demo1.class.getClassLoader().getResource("a.js");
		FileReader reader=new FileReader(url.getPath());
		engine.eval(reader);
		
		
		
	}

猜你喜欢

转载自blog.csdn.net/sinat_41627479/article/details/81256452
今日推荐