动态执行javascript代码

1.java的脚本引擎

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

2.通过代码去执行脚本代码·

  • 获得脚本引擎的对象
    ScriptEngineManager sem=new ScriptEngineManager();
  • 建立脚本引擎
    ScriptEngine engine=sem.getEngineByName("javascript"); 其中参数为要建立的脚本语言
1.在脚本引擎中加入键值对

engine.put("msg", "People are important to face difficulties");

2.执行脚本语言

String str="var user= {name:'xiaofeng',age:18,School:'qinghua'};";
str+="print(user.name);";
engine.eval(str);

3.改变脚本引擎中的内容

engine.eval("msg='People are important to face difficulties 111'");
System.out.println(engine.get("msg"));

4.执行脚本语言的函数

1.先执行脚本语言的函数: engine.eval("function add(a,b){ var sum=a+b;return sum;}");
2.取得调用接口 :Invocable jsInvoke=(Invocable)engine; //将engine转化为Invocable接口对象
3.调用函数 Object result= jsInvoke.invokeFunction("add",new Object[] {13,20});其中参数两个 第一个为方法的名字 第二个为函数的参数

5.将Java中的包在脚本语言js中执行

1.先写出脚本语言代码
String jsCode = "importPackage(java.util); var list=Arrays.asList(["北疆","北疆1","北疆2"]);";
2.执行
engine.eval(jsCode);
3.在Java中将其写出
List p= (List) engine.get("list");

6.执行js文件(我们将其放在src下)

1.URL url=Demo1.class.getClassLoader().getResource("a.js");
2.通过字节流去读FileReader
FileReader p=new FileReader(url.getpath);
enginer.eval(p);
fr.close

你可能感兴趣的:(动态执行javascript代码)