从Javascript调用Java方法的选项

时间:2011-07-02 12:12:12

标签: java javascript html ajax dwr

从Javascript调用“特定”Java方法并进行回调等的各种选项有哪些?

E.g。我知道的是使用DWR ..但是想知道是否有任何其他库可以使用或者如果这可以通过AJAX本身完成..

推荐的方法是什么?

2 个答案:

答案 0 :(得分:2)

简单地说,除了在与JavaScript相同的页面上下文中运行的Java applet之外,JavaScript无法直接调用Java方法,反之亦然。 DWR没有直接从JavaScript调用任何Java方法,它向服务器发送一个AJAX请求,并使用自己的中间层来检测请求和响应处理,使其看起来好像在调用Java方法。

但无论如何,在客户端获取JavaScript代码和服务器上的Java代码相互通信的典型方法是在服务器上定义一个暴露给客户端的API。然后,客户端可以使用公开的API发出请求(使用AJAX或您喜欢的任何其他机制)。客户端不直接调用任何Java方法,而是向服务器上的给定URL发送请求,该请求被映射回一些Java代码。最流行的JavaScript框架提供了简化AJAX请求处理和回调的便捷方法。

如果出于某种原因,您希望功能等同于能够在任意类中调用任意方法并将结果返回给您,那么您可以定义一个API方法,该方法将类名称和方法名称作为参数。然后使用反射来执行方法调用。这可能非常接近DWR的服务器端部分正在做的事情。

答案 1 :(得分:0)

我知道你在使用Mozilla Rhino时可以做到这一点,但我猜你在谈论浏览器运行时环境,所以这个回复可能不是很有帮助。