立即注册
 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广州大学城网业务调整

[Java/JSP] Java如何调用JS脚本里的方法 [复制链接] qrcode

查看: 2196 | 回复: 0

大法师的 该用户已被删除
发表于: 2012-12-17 16:37:06 | 显示全部楼层

  本例子使用了JDK 1.6以上的javax.script包,通过Invocable接口实现JAVA调用JS脚本里的方法,本例中调用分为内部执行脚本和外部执行脚本,外部执行脚本分为不带参数调用和带参数调用。主要采用invokeFunction方法调用:
  ObjectinvokeFunction(String name, Object… args)
  用于调用脚本中定义的顶层程序和函数。
  ObjectinvokeMethod(Object thiz, String name, Object… args)
  对以前的脚本执行中已经编译的脚本对象(以 ScriptEngine 的状态保持)调用某一方法。
  package ajava.code.javase;
  import javax.script.Invocable;
  import javax.script.ScriptEngineManager;
  import javax.script.ScriptEngine;
  import java.io.File;
  import java.io.Reader;
  import java.io.FileReader;
  public class AjavaInvokingFunction {
  public static void main(String[] args) {
  // 获得一个JavaScript脚本引擎,也可以是ECMAScript脚本引擎
  ScriptEngineManager manager = new ScriptEngineManager();
  ScriptEngine engine = manager.getEngineByName("JavaScript");
  String titlescript = "function sayTitle() {"
  + " println('AJava.org源码实例-使用javax.script调用JS脚本里的方法');"
  + " println('--------------------------------------------------');"
  + "}";
  try {
  // 调用内部脚本执行-----------------------------------------
  engine.eval(titlescript);
  // 转换为Invocable
  Invocable invocableEngine = (Invocable) engine;
  // 不带参数调用sayTitle方法
  invocableEngine.invokeFunction("sayTitle");
  // 调用外部脚本执行------------------------------------------
  // 创建JS文件的File对象,并读入流
  File functionscript = new File("ajava.js");
  Reader reader = new FileReader(functionscript);
  // 开始执行ajava.js里的程序
  engine.eval(reader);
  // 不带参数调用sayHello方法
  invocableEngine.invokeFunction("sayHello");
  // 带参数调用sayHello方法
  invocableEngine.invokeFunction("sayHello", "mark");
  } catch (Exception e) {
  e.printStackTrace();
  }
  }
  }
  ajava.js文件:
  function sayHello(){
  sayHello(null);
  }
  function sayHello(name){
  if(name==null){
  println("欢迎你!请注册Ajava会员");
  }else{
  println(name+",AJava.org独立JAVA社区欢迎你");
  }
  }
  运行结果(控制台):
  AJava.org源码实例-使用javax.script调用JS脚本里的方法
  QQ 744437114
  疯狂软件官网:www.fkjava.org
  疯狂java视频 android视频:http://www.fkjava.org/video.html
跳转到指定楼层
快速回复 返回顶部 返回列表