从Javascript调用Java方法

时间:2010-08-30 08:21:56

标签: javascript java web-services

每次单击HTML按钮时都需要调用Java方法。基本上我需要在单击按钮时将一些文本发送到Java类。我已经尝试过applet来实现这种行为但是没有管理。

谢谢

更新 解决方案:Java Web服务

7 个答案:

答案 0 :(得分:3)

有一种更好的方法,

  

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

     

DWR是简单的Ajax for Java

请参阅demo

  

DWR将生成JavaScript   允许Web浏览器安全地调用   几乎就像是Java代码一样   在本地运行。它可以编组   几乎任何数据包括   集合,POJO,XML和二进制   图像和PDF文件等数据。所有   这是一个安全策略   它定义了允许的内容。

     

使用Reverse Ajax,DWR允许使用Java   在服务器上运行以使用客户端的代码   用于发布更新的API   任意组的浏览器。这个   允许交互2种方式 - 浏览器   调用服务器和服务器调用   浏览器。 DWR支持Comet,Polling   和Piggyback(发送数据)   正常请求)作为发布方式   浏览器。

     

DWR提供与Dojo的集成,   TIBCO GI,Scriptaculous in the   浏览器,以及Spring,Struts,   Guice,Hibernate和其他人   服务器

答案 1 :(得分:2)

您的问题涉及多种技术。我会尽力为你们提供一些指导。

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

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

关于servlet如何工作有abundant literature,但简而言之,一旦部署在应用程序服务器中,当从浏览器调用应用程序URL时,可以调用servlet中的代码。

所以,以下是步骤:

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

    如果你的函数没有返回值,只是“做某事”,那么你真的不关心响应,但是,使用AJAX,你也可以检查响应的状态查看在服务器端执行您的功能时是否发生任何异常

答案 2 :(得分:1)

您无法从Javascript调用Java方法。

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

答案 3 :(得分:1)

Real Gagnon post开始,你总是从javascript调用applet主类的公共方法。

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

答案 4 :(得分:1)

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

查看Java Servlet规范或无数Java Webapp框架之一。

答案 5 :(得分:1)

我不知道这个Java在哪里运行。是在浏览器中,还是在服务器上?如果服务器然后你没有直接调用任何东西,你使用某种异步调用来获得响应 - JSON,DWR,GWT RPC,Soap,Ad Hoc XML等。

如果代码在浏览器中作为applet运行,那么Java Plugin提供了允许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

答案 6 :(得分:1)

是的,有可能..你可以通过http请求和响应来调用java方法并获得响应..