6.游戏特别离不开脚本(3)-JS脚本操作java(直接解析JS公式,并非完整JS文件或者函数)
2013-07-18 14:12
513 查看
engine.put("usList", us);
engine.put("obj", new JSModifiedJava()) ;
取个变量名就put进去
执行结果
engine.put("obj", new JSModifiedJava()) ;
取个变量名就put进去
import java.util.ArrayList; import java.util.List; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class JSModifiedJava { public void sayHello(String name){ System.out.println("*************Hello***************"+name); } public static void main(String[] args) { //创建 List对象,并添加3个原用户 List<String> us = new ArrayList<String>(); us.add("JLee 1"); us.add("JLee 2"); //获得JS引擎 ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByExtension("js"); String script = ""; //把List对象加入JS引擎 engine.put("usList", us); {//用JS输出java对象的数据 System.out.println("用JS输出java对象的数据"); script = "var index; " + "var usname = usList.toArray(); " + "for (index in usname) { " + "println('原用户='+usname[index]); " + "}"; //执行脚本 try { engine.eval(script);// 通过引擎调用getScript() } catch (ScriptException e) { e.printStackTrace(); } } {//JS可以对对象进行修改在,java代码可以得到修改后的 System.out.println("JS可以对对象进行修改在,java代码可以得到修改后的"); script = "usList.add(\"JLee 3\"); " + "usList.add(\"JLee 4\"); "; //执行脚本 try { engine.eval(script);// 通过引擎调用getScript() } catch (ScriptException e) { e.printStackTrace(); } //java代码显示被JS修改后所有用户 for (String usname : us) { System.out.println("所有用户 = " + usname); } } //将要操作的对象加入引擎 engine.put("obj", new JSModifiedJava()) ; {//在JS中甚至可以调用对象的方法 System.out.println("在JS中甚至可以调用对象的方法"); script = "obj.sayHello('JLee')" ; //执行脚本 try { engine.eval(script);// 通过引擎调用getScript() } catch (ScriptException e) { e.printStackTrace(); } } // //根据JavaScript名获取一个脚本引擎实例 // ScriptEngine engine2 = manager.getEngineByName("JavaScript"); // try { // engine2.eval("print('Hello JLee ...')"); // } catch (ScriptException e) { // e.printStackTrace(); // } } }
执行结果
用JS输出java对象的数据 原用户=JLee 1 原用户=JLee 2 JS可以对对象进行修改在,java代码可以得到修改后的 所有用户 = JLee 1 所有用户 = JLee 2 所有用户 = JLee 3 所有用户 = JLee 4 在JS中甚至可以调用对象的方法 *************Hello***************JLee
相关文章推荐
- 6.游戏特别离不开脚本(3)-JS脚本操作java(2)(直接解析JS公式,并非完整JS文件或者函数)
- 6.游戏特别离不开脚本(3)-JS脚本操作java(3)(直接操作JS文件或者调用函数)
- 6.游戏特别离不开脚本(4)-应该避免将集合框架对象传给JS
- Java BufferedInputStream与BufferedOutputStream 入门版实例解析【文件操作】
- java日期操作,js解析xml
- 解析linux 文件和目录操作的相关函数
- VC++文件操作函数解析
- java速度入四.文件的基本操作及猜数字游戏的实现
- 【python】解析Excel中使用xlrd库、xlwt库操作,写入excel进阶完整脚本实例(五)
- node.js关于一个js文件引用另一个js文件里面的函数或者数组变量
- 两个集合直接的操作 如何jsp页面迭代遍历,js如何写函数
- Java解析魔兽争霸3录像W3G文件(三):解析游戏开始前的信息
- java解析xml文件读取本地dtd或者忽略dtd
- java 实现 文件操作工具集。包括文件、目录树的拷贝、删除、移动、查找等工具函数
- Java基础系列19:使用JXL或者POI生成和解析Excel文件
- Java中的文件与磁盘操作技术详细解析
- 对xsd文件的操作 生成java实体并解析生成的xml
- java知识系列之操作js文件
- java 操作 poi 解析、读取 Excel 文件
- 利用jdk对xsd文件操作生成java实体并解析生成的xml