js调用java函数6,java6 java与js交互

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

System.out.println(t.get(i));

}

}

}

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

function AddIt()

{

lst.add("xyz");

lst.add("1234");

}

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

以上只是最基本的例子。更深入的用法参看JDK文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值