在javascript代码中调用java方法

IT技术 java javascript
2021-01-15 02:22:37

我创建了一个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 方法的方法,我发现了您所说的小程序,但我认为它对我没有用。再次感谢

2个回答

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

  • 创建一个 Web 服务(例如使用Tomcat
  • 从 JavaScript 调用它的 URL(例如使用 JQuery或 dojo)

当 Java 代码在小程序中时,您可以使用 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>

Java 是一种服务器端语言,而 javascript 是一种客户端语言。两者无法沟通。如果您使用 Java 设置了一些服务器端脚本,您可以在客户端使用AJAX以向其发送异步请求,从而调用任何可能的 Java 函数。例如,如果您使用 jQuery 作为 js 框架,您可以查看该$.ajax()方法。或者,如果您想使用普通的 javascript 来完成,这里有一个教程

@Darin:不幸的是,它们是唯一可以跨浏览器兼容的东西,可以让您在 Web 应用程序中访问与 PKCS#11 兼容的智能卡。浏览器供应商/制造商没有将其直接集成到 Javascript 中而感到羞耻!
2021-03-17 02:22:37
他们可以 - 我认为 Nadya 可能意味着脚本小程序的场景,其中 Javascript 确实可以调用 Java 世界,反之亦然。但无论如何,这个问题太详细了,不知道;)
2021-03-27 02:22:37
是的,applet 仍然存在,我每周都会使用一个(虽然我宁愿它不是那样实现的)。
2021-03-27 02:22:37
抱歉,如果我的问题不清楚,因为我还是初学者,我会解释一下,我有一个带有方法的 java 类,并且在我的 pageweb 中我有一个 javascript 代码。我想在不使用小程序的情况下在 javascript 代码中调用我的方法。
2021-04-11 02:22:37