【问题标题】:calling java methods in javascript code [closed]在javascript代码中调用java方法[关闭]
【发布时间】:2011-10-02 17:02:25
【问题描述】:

我创建了一个java类内容方法返回一个字符串,我的问题是如何在我的javascript代码中调用这个函数来使用java方法的返回值。我想调用浏览器中嵌入的客户端Java代码。

这是我所说的一个例子:

在我的网页中,我有一个 javascript 代码,下面是其中的一些:

    function createChartControl(htmlDiv1)
{
    // Initialize Gantt data structures
    //project 1
    var parentTask1 = new GanttTaskInfo(1, "Old code review", new Date(2010, 5, 11), 208, 50, "");
......................

我想创建一个 java 类内容方法来向这个 javascript 函数“GanttTaskInfo”提供数据。 例如获取名称、获取 id 和日期的函数。 好吧,我想这次我很清楚:D 我搜索了一种在javascript中调用java方法的方法,我发现了你所说的applet,但我认为它对我没有用。 再次感谢

【问题讨论】:

  • 问题需要澄清。
  • 什么Java代码?小程序?网络服务? JSP?什么 JavaScript 代码?在浏览器中?节点.js?您希望数据如何在两者之间传输?他们在什么计算机上运行?
  • 为什么关闭?我认为这是一个很好的问题。 Oracle Java Plugin 支持解决方案。看看我的回答:)
  • 虽然问题很模糊,但你可以让他改进。从 javascript 调用 java 的一种方法是使用 Java Scripting Engine
  • +1 重新打开问题

标签: java javascript


【解决方案1】:

当它在服务器端时,使用 Web 服务 - 可能是带有 JSON 的 RESTful。

  • 创建一个网络服务(例如Tomcat
  • 从 JavaScript 调用其 URL(例如 with JQuery 或 dojo)

当 Java 代码在 applet 中时,您可以使用 JavaScript 桥。 Java 和 JavaScript 编程语言之间的桥,非正式地称为 LiveConnect,在 Java 插件中实现。以前特定于 Mozilla 的 LiveConnect 功能,例如调用静态 Java 方法、实例化新 Java 对象和从 JavaScript 引用第三方包的能力,现在可在所有浏览器中使用。

以下是文档中的示例。看methodReturningString

Java 代码:

public class MethodInvocation extends Applet {
    public void noArgMethod() { ... }
    public void someMethod(String arg) { ... }
    public void someMethod(int arg) { ... }
    public int  methodReturningInt() { return 5; }
    public String methodReturningString() { return "Hello"; }
    public OtherClass methodReturningObject() { return new OtherClass(); }
}

public class OtherClass {
    public void anotherMethod();
}

网页和 JavaScript 代码:

<applet id="app"
        archive="examples.jar"
        code="MethodInvocation" ...>
</applet>
<script language="javascript">
    app.noArgMethod();
    app.someMethod("Hello");
    app.someMethod(5);
    var five = app.methodReturningInt();
    var hello = app.methodReturningString();
    app.methodReturningObject().anotherMethod();
</script>

【讨论】:

    【解决方案2】:

    Java 是一种服务器端语言,而 javascript 是一种客户端语言。两者无法沟通。如果您使用 Java 设置了一些服务器端脚本,您可以在客户端上使用 AJAX 以便向其发送异步请求,从而调用任何可能的 Java 函数。例如,如果你使用 jQuery 作为 js 框架,你可以看看$.ajax() 方法。或者,如果您想使用纯 javascript,here's a tutorial

    【讨论】:

    • 他们可以——我认为 Nadya 可能意味着脚本化小程序的场景,其中 Javascript 确实可以调用 Java 世界,反之亦然。但无论如何,这个问题太详细了,不知道;)
    • 是的,小程序仍然存在,我每周都会使用一个(尽管我宁愿不那样实现)。
    • @Darin:不幸的是,它们是唯一兼容跨浏览器的东西,可让您在 Web 应用程序中访问与 PKCS#11 兼容的智能卡。浏览器供应商/制造商没有将其直接集成到 Javascript 中而感到羞耻!
    • 对不起,如果我的问题不清楚,因为我还是初学者,我会解释一下,我有一个带有方法的 java 类,在我的 pageweb 中我有一个 javascript 代码。我想在不使用小程序的情况下在 javascript 代码中调用我的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多