用ajax的方法.
首先,將要呼叫的類別名稱和方法名稱作為參數傳遞給某個servlet。這一步驟可以透過使用框架或直接使用XMLHttpRequest物件來實現。
另外,要呼叫的類別名稱和類別的完整套件路徑最好寫在設定檔裡
這裡假設類別名為Hello,方法名為sayHello,且sayHello方法不帶參數,類別路徑為com.demo.Hello
設定檔AjaxConfig.properties
Hello = com.demo.Hello
#於是傳入的參數為 class=Hello&method=sayHello
在servlet中作如下處理:
String className=request.getParameter("classname");
String methodName=request.getParameter("method");
String classPath=null;
.
讀取設定文件,取出className所對應的值放入classPath變數中(這一步方法有很多種,怎麼讀設定文件,可以網路上找資料,很多的,我就不細寫了)
.
Class c=Class.forName(classPath);//載入你所指定的類別
Class param[]=new Class[0];//方法的參數為0個
Method m=null;
String returnValue=null;//回傳值
try {
m = c.getMethod("sayHello",param);//取得你所指定的類別中的指定方法
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
returnValue=(String)m.invoke(c.newInstance(), new Object[0]);//呼叫你所指定的方法
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
最後,將returnValue的值回傳給客戶端即可
類別Hello.java
public class Hello
{
public String sayHello()
{
return "hello";
}
}
不明白的加67919823,我們一起討論呀
#為了方便網頁和Android應用的交互,Android系統提供了WebView中JavaScript網頁腳本呼叫Java類別方法的機制。只要呼叫addJavascriptInterface方法即可映射一個Java物件到JavaScript物件上。
1、映射Java物件到JavaScript物件上
程式碼如下:
mWebView = (WebView) findViewById(R.id.wv_content);
mWebView.setVerticalScrollbarOverlay(true);
final WebSettings settings = mWebView.getSettings();
settings.setSupportZoom(true);
//WebView啟用Javascript腳本執行
settings.setJavaScriptEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
//映射Java物件到一個名為」js2java「的Javascript物件上
//JavaScript中可以透過"window.js2java"呼叫Java物件的方法
mWebView.addJavascriptInterface(new JSInvokeClass(), "js2java");
程式碼如下:
/**網頁Javascript呼叫介面**/
class JSInvokeClass {
public void back() {
activity.finish();
}
}
2、JavaScript呼叫Java物件範例
呼叫上述JSInvokeClass類別物件的back方法,如下:
複製程式碼 程式碼如下:
window.js2java.back();
很難!一個是前台,一個是後台,但AJAX 實現了這個想法! . 下面是一個AJAX實例:
// JavaScript Document
var xmlHttp;
function GetXmlHttpObject()
{
var xhr=null;
try
{
// Firefox, Opera 8.0 , Safari
xhr=new XMLHttpRequest();
}catch (e)
{
// Internet Explorer
try
{
xhr=new ActiveXObject("Msxml2.XMLHTTP");
}catch (e)
{
xhr=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xhr;
}
function getDataByDept(str)
{
xmlHttp = GetXmlHttpObject();
if(xmlHttp==null)
{
alert("很抱歉!您的瀏覽器不支援AJAX!");
return;
}
var url = "/intcard/jsp/employee.do?method=getByDept"
xmlHttp.onReadyStateChange=stateChanged;
xmlHttp.open("post",url,true);
xmlHttp.setRequestHeader('Content-Type', 'application/x--form-urlencoded;charset=UTF-8');
xmlHttp.send("dept=" str);
}
function stateChanged()
{
if(xmlHttp.readyState == 4)
{
var result = xmlHttp.responseText;
document.getElementById("select_employees").innerHTML = result;
}
}
想法就是,透過HTML控制項的事件呼叫JS的方法,在JS理透過httprequest物件的open方法呼叫伺服器腳本----- 在伺服器腳本裡你可以用javabean的方法,並且把計算結果傳遞給JS.曲線實現了你的思想
以上是js怎麼呼叫JAVA類別的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!