在javascript中调用java方法

时间:2012-07-18 07:36:36

标签: java javascript html jsp java-ee

我试图在javascript中调用java方法。 java类驻留在服务器端。

示例Java代码是:

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

}

我想在我的javascript

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

非常感谢任何帮助。

干杯

4 个答案:

答案 0 :(得分:5)

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

如果没有任何特定的Java框架,您可以使用Java Server Pages(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 Server Pages的信息可以帮助您入门!

答案 1 :(得分:2)

您可以使用JavaServerPage(JSP)或Applet,这是适合您情况的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>

答案 2 :(得分:2)

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

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

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

答案 3 :(得分:1)

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

技术上有一些方法可行,但不确定为什么你会这样做:

Google的网络工具包:   - 见:http://code.google.com/p/google-web-toolkit-doc-1-5/wiki/DevGuideRPCDeployment