Java与js脚本交互Java

http://wenku.baidu.com/view/0984dc4f2e3f5727a5e962b3.html


Java与js脚本交互Java 2007-12-19 21:38:49 阅读209 评论1   字号:大中小 订阅 
    Java6.0(JDK1.6)中提供了许多新功能。其中很重要的一项是可以在java中与脚本语言交互,比如,调用js中的函数,或是把java中的对象送到js中去操作。


    随着web应用的普及,脚本语言越来越扮演了重要角色。Java恰到好处地提供了对脚本语言的支持,可以说是十分及时、十分必要的。这一特性可以增强Java的动态性能,把许多经常要变动的逻辑放到脚本中去处理。


    Java用于支持Script的类都在javax.script包中。


    下面的例子演示了Java中如何调用js中的函数。


import javax.script.*;
import java.io.*;


public class ScriptTest
{
 public static void main(String[] args) throws Exception
 {
  //生成用于解析的引擎
  ScriptEngine engine = new ScriptEngineManager().getEngineByExtension("js");
  //装入一段js脚本
  engine.eval(new FileReader("my.js"));
  Invocable in = (Invocable)engine;
  //调用脚本中定义函数
  Object t = in.invokeFunction("DoIt",15,20);
  System.out.println(t);
 }
}


所使用的脚本my.js 如下:


function DoIt(x,y)
{
 return x*100+y;
}


    除了可以调用js外,我们很可能会需要把一个对象,比如list送到js中去处理。下面代码示意了这种情况。


import javax.script.*;
import java.io.*;
import java.util.*;


public class ScriptTest
{
 public static void main(String[] args) throws Exception
 {
  List t = new Vector();
  t.add("abcd");
  
  //生成用于解析的引擎
  ScriptEngine engine = new ScriptEngineManager().getEngineByExtension("js");
  
  //把对象梆定到engine中,以备js中调用
  Bindings bd = engine.createBindings();
  bd.put("lst", t);
  engine.setBindings(bd, ScriptContext.ENGINE_SCOPE);
  
  //装入js脚本
  engine.eval(new FileReader("my2.js"));
  
  //调用脚本中定义函数
  Invocable in = (Invocable)engine;
  in.invokeFunction("AddIt");
  
  for(int i=0; i<t.size(); i++){
   System.out.println(t.get(i));
  }


}


}


    其中使用的my2.js定义如下:


function AddIt()
{
  lst.add("xyz");
  lst.add("1234");
}


    正如您所猜测的,其实不使用Bindings也可把一个对象传入到js中,直接从函数的参数中送过去就可以了。使用Bindings的好处是可以做出类似于“全局变量”的效果,而不用每次都把许多参数传来传去的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值