在javascript中调用java方法

calling java method in javascript

本文关键字:java 方法 调用 javascript      更新时间:2023-11-27

我正在尝试用javascript调用一个java方法。java类驻留在服务器端。

示例Java代码是:

public class deleteconfig
{
  static boolean check = true;
  public static void initiate()
  {
    check = false; 
  }
}

我想在我的javascript 中调用我的deleteconfig.initiate()方法

非常感谢您的帮助。

干杯

由于javascript是客户端脚本,它不能直接调用驻留在服务器上的java方法

如果没有任何特定的java框架,您可以使用java服务器页面(JSP)在接收到来自javascript的GET请求时调用deleteconfig.initiate()。

发送请求

您可能还想使用JQuery(一个javscript插件-http://jquery.com/)向服务器发送异步GET请求,如

//javascript code
function callInititiate(){
   //This sends a get request to executeInit.jsp
   //
   $.get('localhost/myWebbApp/executeInit.jsp');
}
$(callInitiate);

接收请求

在服务器端,应该有executeInit.jsp,它调用deleteconfig.initiate()静态方法

//in executeInit.jsp
<%@ page import="deleteconfig"%>
<%
// executes initiate() static method
deleteconfig.initiate();
%>

也许阅读更多关于Java服务器页面的信息可以让你开始!

javascript在浏览器中运行,java代码部署在容器(Tomcat)中。

所以调用它的唯一方法是通过Web调用。您的javascript应该调用对一个servlet(在web.xml中配置)的ajax调用,这个servlet应该调用您的java方法。

您也可以在服务器中运行javascript。请参阅NodeJS

您可以使用JavaServerPage(JSP)或Applets,下面是针对您的情况的JSP示例:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
 <HEAD> 
  <TITLE>JSP</TITLE> 
 </HEAD> 
 <BODY> 
  <H2>JSP </H2> 
  <UL> 
    <LI>Curent time: <%= new java.util.Date() %> 
    <LI>Host name: <%= request.getRemoteHost() %> 
    <LI>ID sesion: <%= session.getId() %> 
  </UL> 
  <% deleteconfig deletecfg = new deleteconfig(); %>
  <%= delectecfg.initiate(); =%>
 </BODY> 
</HTML> 

JSP脚本元素包括:

  • 表达式:<% = expression%>计算表达式并打印出文档
  • Scriptlet <% code%>将代码插入servlet服务方法中
  • 语句:<%! code%>代码被插入到servlet类中,在任何方法之外

对于JSP脚本元素是可能的,另一种基于XML标记的语法形式是:

  • <jsp:expression> Java expression </ jsp: expression>
  • <jsp:scriptlet> Java code </ jsp: scriptlet>
  • <jsp:declaration> Statement Java </ jsp: declaration>

您的Javascript在浏览器中运行客户端,因此通常不会与运行Java代码的服务器端交互。您可能希望将Java方法公开为RESTful API端点,并在Javascript代码中执行AJAX调用。

  • 请参阅:http://docs.jquery.com/Tutorials(ajax教程)

有几种方法在技术上是可行的,但不确定你为什么要这样做:

  • 请参阅:http://www.andonyar.com/rec/2008-12/gemse/demo/doc/dev/java.xhtml
  • 请参阅:http://www.rgagnon.com/javadetails/java-0170.html

谷歌的网络工具包:-请参阅:http://code.google.com/p/google-web-toolkit-doc-1-5/wiki/DevGuideRPCDeployment