我试图在javascript中调用java方法。 java类驻留在服务器端。
示例Java代码是:
public class deleteconfig
{
static boolean check = true;
public static void initiate()
{
check = false;
}
}
我想在我的javascript
中调用我的deleteconfig.initiate()方法非常感谢任何帮助。
干杯
答案 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%>
表达式将被评估并打印出文档。<% 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