首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

一个最容易的Rhino的例子

2012-10-31 
一个最简单的Rhino的例子JSFunction.javapackage com.milenfan.rhinoimport org.mozilla.javascript.Func

一个最简单的Rhino的例子

JSFunction.java    package com.milenfan.rhino;    import org.mozilla.javascript.Function;    public class JSFunction // extends ScriptableObject  {      private String name;        private Function handle;        public void setHandler(Function func) {          this.handle = func;      }        public Function getHandler() {          return this.handle;      }        public JSFunction(String s) {          this.name = s;      }        public static void print(String s) {          System.out.println(s);      }        public String getName() {          return name;      }        public void setName(String name) {          this.name = name;      }    }  

?

?

var swingNames = JavaImporter();    swingNames.importPackage(Packages.java.lang);  swingNames.importPackage(Packages.com.milenfan.rhino);    obj = {      a : 1,      b : [ 'x', 'y' ]  }  next = isPrime  flag = isPrime(5)  with (swingNames) {      System.out.println("in javascript");      JSFunction.print("in JSFunction");      jsFunction = new JSFunction("caizhenyao");      var name = jsFunction.getName();      System.out.println("get name from java source: " + name);      jsFunction.setHandler(log);  }    java.lang.System.out.println("not use swingNames");  function isPrime(num) {      java.lang.System.out.println("in isPrime(num)");      if (num <= 1) {          java.lang.System.out.println("Please enter a positive integer >= 2.")          return false      }        var prime = true      var sqrRoot = Math.round(Math.sqrt(num))        for ( var n = 2; prime & n <= sqrRoot; ++n) {          prime = (num % n != 0)      }        return prime  }    function log(msg) {      java.lang.System.out.println("in function log: " + msg);  }  

?

package com.milenfan.rhino;    import java.io.FileReader;  import java.io.LineNumberReader;    import org.mozilla.javascript.Context;  import org.mozilla.javascript.Function;  import org.mozilla.javascript.Scriptable;    public class JSExploration {      private Context cx;        private Scriptable scope;        public JSExploration() {          this.cx = Context.enter();          this.scope = cx.initStandardObjects();      }        public Object runJavaScript(String filename) {          String jsContent = this.getJsContent(filename);          Object result = cx.evaluateString(scope, jsContent, filename, 1, null);          return result;      }        private String getJsContent(String filename) {          LineNumberReader reader;          try {              reader = new LineNumberReader(new FileReader(filename));              String s = null;              StringBuffer sb = new StringBuffer();              while ((s = reader.readLine()) != null) {                  sb.append(s).append("\n");              }              return sb.toString();          } catch (Exception e) {              // TODO Auto-generated catch block              e.printStackTrace();              return null;          }      }        public Scriptable getScope() {          return scope;      }        public static void main(String[] args) {          String filename = "D:\\workplace\\WebProject\\src\\com\\milenfan\\rhino\\jsmap.js";          JSExploration jsExploration = new JSExploration();          Object result = jsExploration.runJavaScript(filename);          Scriptable scope = jsExploration.getScope();          Scriptable obj = (Scriptable) scope.get("obj", scope);          System.out.println("obj.a == " + obj.get("a", obj));          Scriptable b = (Scriptable) obj.get("b", obj);          System.out.println("b[0] == " + b.get(0, b));          Boolean flag = (Boolean) scope.get("flag", scope);          System.out.println(flag);            Scriptable myobj = (Scriptable) scope.get("obj", scope);          Boolean myflag = (Boolean) scope.get("flag", scope);          System.out.println(myflag);            Scriptable jsFunction = (Scriptable) scope.get("jsFunction", scope);          Function fc = (Function) jsFunction.get("handler", jsFunction);          Object isPrime = fc.call(Context.getCurrentContext(), jsFunction, fc,                  new Object[] { "this is my test" });      }  }  
?

热点排行