从Javascript调用Java方法

从Javascript调用Java方法,javascript,java,web-services,Javascript,Java,Web Services,每当我单击HTML按钮时都需要调用Java方法。基本上,我需要在单击按钮时向Java类发送一些文本。我曾尝试过小程序实现这种行为,但没有成功 谢谢 更新 解决方案:Java Web服务您不能从Javascript调用Java方法 但是,您可以使用Javascript向服务器发出HTTP请求,服务器将为您运行Java方法。有更好的方法 DWR是一个Java库,它支持 服务器上的Java和 浏览器进行交互并调用每个 其他尽可能简单 DWR是一种简单的Ajax for Java 见 DWR将生成Jav

每当我单击HTML按钮时都需要调用Java方法。基本上,我需要在单击按钮时向Java类发送一些文本。我曾尝试过小程序实现这种行为,但没有成功

谢谢

更新
解决方案:Java Web服务

您不能从Javascript调用Java方法


但是,您可以使用Javascript向服务器发出HTTP请求,服务器将为您运行Java方法。

有更好的方法

DWR是一个Java库,它支持 服务器上的Java和 浏览器进行交互并调用每个 其他尽可能简单

DWR是一种简单的Ajax for Java

DWR将生成JavaScript以 允许web浏览器安全地调用 将其转换为Java代码,就像 在本地运行。它可以编组 几乎任何数据,包括 集合、POJO、XML和二进制 图像和PDF文件等数据。全部的 这是安全策略所必需的 这定义了什么是允许的

使用反向Ajax,DWR允许Java 在服务器上运行以使用客户端的代码 将更新发布到的附加API 任意浏览器组。这 允许两种方式的交互-浏览器 调用服务器和服务器调用 浏览器DWR支持Comet、轮询 和背驮(使用 普通请求)作为发布到 浏览器

DWR提供与Dojo的集成, TIBCO GI,古希腊的Scriptaculous 浏览器,并带有弹簧、支柱、, Guice、Hibernate和其他 服务器

从中,您可以始终从javascript调用小程序主类的公共方法


但是现在,这种代码已经被弃用,取而代之的是对Java服务器后端的REST调用。

你知道,你必须为此创建一个Web应用程序吗?为此,您需要一个应用服务器(例如Tomcat)。使用Web应用程序,您可以(粗略地说)将服务器上某个操作的URL放入包含输入框的表单的Action属性中。该操作将是一个方法的Java类(取决于您使用的框架)


看看Java Servlet规范或无数Java Webapp框架中的一个。

我不知道这个Java在哪里运行。它是在浏览器中还是在服务器上?如果服务器没有直接调用任何东西,则使用某种异步调用来获取响应—JSON、DWR、GWT RPC、Soap、即席XML等

如果代码作为小程序在浏览器中运行,那么Java插件提供了允许Java调用JS和JS调用Java的入口点。Java对象可以调用JS中的一个方法,将其自己的回调接口作为参数传递。一旦JS有了这个接口,就可以进行双向通信。闪光灯和Silverlight也可以实现类似的功能


本文档解释了-

您的问题如何涉及多种技术。我将试着分步给你一些方向

编写Java类时,它部署在服务器端。编写JavaScript函数时,它部署在客户端

服务器端Java类可以部署为应用服务器中的web应用程序(例如),并通过URL公开。这样做的接口是编写所谓的Servlet。servlet只不过是部署在同一应用服务器上的另一个Java类。这个servlet类可以调用Java方法。(注意:还有其他技术(例如JSP或Java服务器页面等)最终被重新设计为servlet。)

关于servlet的工作方式有很多问题,但简而言之,一旦部署到应用服务器中,当从浏览器调用应用程序URL时,就可以调用servlet中的代码

因此,以下是步骤:

  • 您可以从浏览器中为部署在应用程序服务器上的应用程序调用URL。例如,您调用
    http://localhost:8080/myapp/doSomething
  • 您的web应用程序(myapp)有一个部署描述符(web.xml),它有自己的URL映射。通过引用这个描述符,您的webapp意识到对于URL:“/doSomething”,它应该调用MyServlet(部署在服务器上的servlet)
  • 您的servlet(MyServlet)现在将实现一些标准的
    doXXX
    方法(用于GET、POST等操作)
  • 在doXXX方法的这个实现中,您可以调用Java类方法
  • 一旦servlet完成执行,它会将响应写入servlet的输出流,然后应用服务器通过http将输出流返回到浏览器。现在,在您的响应中,您可以选择编写任何您想要的内容—这是您在调用URL时在浏览器上可用的内容
  • 在完成上述步骤后,您可以从JavaScript调用URL,并使用等技术获得响应


    如果您的函数没有返回值,只是“做了些什么”,那么您真的不关心响应,但是,使用AJAX,您还可以检查响应上的状态,以查看在服务器端执行函数时是否出现异常。

    是的,这是可能的。。您可以通过http请求和响应来调用java方法并获得响应。

    小程序中有什么具体不起作用?你在做什么样的处理?这可能是在服务器端完成的吗?@josefx-这就像说“你可以在太空中呼吸……除了你需要很多特殊和昂贵的装备”。这应该会让我回到正轨上,我认为……看起来很直接谢谢你=]欢迎你Daniel,如果是这样的话,你总是可以接受它作为答案。我对这个JavaJavaScript交互还不熟悉,但是谢谢你,我应该研究一下,你能给我一个简单的例子来说明你的答案吗?