测试js脚本引擎

public class helloworld {

public static void main(String[] args) throws Exception  {
	//获得脚本引擎对象
	ScriptEngineManager sem=new ScriptEngineManager();
	ScriptEngine engine=sem.getEngineByName("javascript");
	
	//定义变量,会存储到引擎上下文种,java和js都能取到
	engine.put("msg","good man");
	String  str="var user= {name:'我',age:18,schools:['高中','大学']};";
	str+="print(user.name);";

	//执行脚本
	engine.eval(str);
	//js代码修改
	engine.eval("msg = 'i am a good man';");
	//java获取值
	System.out.println(engine.get("msg"));
	
	//定义js函数
	engine.eval("function add(a,b){var sum=a+b;return sum;}");
	//执行js函数
	//取得调用接口
	Invocable jsInvoke =(Invocable)engine; //Invocable是ScriptEngine的一个接口,调用函数需要强转
	//执行js函数
	Object result1=jsInvoke.invokeFunction("add", new Object[]{113,20});
	System.out.println(result1);
	
	//导入其他java包,使用其他包种的java类
	String jsCode=" var list=java.util.Arrays.asList([\"小学\",\"大学\"]);";
	engine.eval(jsCode);
	
	List<String> list2=(List<String>)engine.get("list");
	
	for(String temp:list2)
	{
		System.out.println(temp);
	}
	
	//执行一个js文件(置于src下即可)
	URL url=helloworld.class.getClassLoader().getResource("nn.js"); //类加载器,返回url
	FileReader fr=new FileReader(url.getPath());
	engine.eval(fr);
	fr.close();    
}
}