【发布时间】:2010-08-30 08:21:56
【问题描述】:
每次单击 HTML 按钮时都需要调用 Java 方法。基本上,当我单击按钮时,我需要将一些文本发送到 Java 类。我已经尝试过小程序来实现这种行为,但没有成功。
谢谢
更新 解决方案:Java Web 服务
【问题讨论】:
-
小程序有什么特别不工作的地方?你在做什么处理?可以在服务器端完成吗?
标签: javascript java web-services
每次单击 HTML 按钮时都需要调用 Java 方法。基本上,当我单击按钮时,我需要将一些文本发送到 Java 类。我已经尝试过小程序来实现这种行为,但没有成功。
谢谢
更新 解决方案:Java Web 服务
【问题讨论】:
标签: javascript java web-services
您的问题涉及多种技术。我将尝试逐步为您提供一些指导。
当你编写一个Java 类时,它被部署在服务器端。当你编写一个 JavaScript 函数时,它被部署在客户端。
服务器端 Java 类可以作为 Web 应用程序部署在应用程序服务器中(例如Apache tomcat),并通过 URL 公开。这样做的接口是编写所谓的Servlet。 servlet 只不过是部署在同一应用程序服务器上的另一个 Java 类。这个 servlet 类可以调用您的 Java 方法。 (注意:还有其他技术(例如 JSP 或 Java 服务器页面)最终会被重新设计为 servlet。)
关于 servlet 的工作原理有abundant literature,但简而言之,一旦部署到应用服务器中,当从浏览器调用应用程序 URL 时,就可以调用 servlet 内部的代码。
所以,步骤如下:
http://localhost:8080/myapp/doSomething
doXXX 方法(用于 GET、POST 等操作)。说了以上步骤后,您可以从 JavaScript 调用 URL 并使用 AJAX 等技术获得响应。
如果你的函数不返回值,而只是“做某事”,那么你真的不关心响应,但是,使用 AJAX,你也可以检查响应上的状态查看在服务器端执行您的函数时是否发生任何异常。
【讨论】:
还有更好的办法,
DWR 是一个 Java 库,它支持 服务器上的 Java 和 JavaScript 中的 浏览器进行交互和调用每个 其他尽可能简单。
DWR 是 Java 的 Easy Ajax
见demo
DWR 将生成 JavaScript 以 允许网络浏览器安全地调用 几乎就像是 在本地运行。它可以编组 几乎任何数据,包括 集合、POJO、XML 和二进制 图像和 PDF 文件等数据。全部 需要的是安全策略 这定义了允许的内容。
使用反向 Ajax,DWR 允许 Java 在服务器上运行以使用客户端的代码 将更新发布到的侧 API 任意组的浏览器。这 允许交互 2 种方式 - 浏览器 调用服务器和服务器调用 浏览器。 DWR 支持 Comet、Polling 和 Piggyback(用 正常请求)作为发布到的方式 浏览器。
DWR 提供与 Dojo 的集成, TIBCO GI, Scriptaculous in the 浏览器,以及 Spring、Struts、 Guice、Hibernate 等 服务器。
【讨论】:
您不能从 Javascript 调用 Java 方法。
但是,您可以使用 Javascript 向将为您运行 Java 方法的服务器发出 HTTP 请求。
【讨论】:
从Real Gagnon post,你总是可以从javascript调用小程序主类的公共方法。
但如今,此类代码已被弃用,取而代之的是对 Java 服务器后端的 REST 调用。
【讨论】:
您知道,您必须为此创建一个 Web 应用程序吗?为此,您需要一个应用程序服务器(例如 Tomcat)。使用 Web 应用程序,您可以 - 粗略地说 - 将服务器上的操作的 URL 放入包含输入框的表单的操作属性中。 Action 将是方法的 Java 类(取决于您使用的框架)。
查看 Java Servlet 规范或无数 Java Webapp 框架之一。
【讨论】:
我不知道这个 Java 在哪里运行。是在浏览器上,还是在服务器上?如果服务器不直接调用任何东西,则使用某种异步调用来获取响应 - JSON、DWR、GWT RPC、Soap、Ad Hoc XML 等。
如果代码作为小程序在浏览器中运行,则 Java 插件提供允许 Java 调用 JS 和 JS 调用 Java 的入口点。 Java 对象可以调用 JS 中的方法,将它自己的回调接口作为参数传递。一旦 JS 有了那个接口,就可以进行两种方式的通信。 Flash 和 Silverlight 也可以进行类似的操作。
本文档解释了如何 - http://download-llnw.oracle.com/javase/1.4.2/docs/guide/plugin/developer_guide/java_js.html
【讨论】:
是的,这是可能的。您可以通过 http 请求和响应来调用 java 方法并获取响应..
【讨论】: