Rumah >tutorial komputer >pengetahuan komputer >Bagaimana untuk memanggil kaedah kelas JAVA dalam js
Gunakan kaedah ajax.
Pertama, hantar nama kelas dan nama kaedah untuk dipanggil sebagai parameter kepada servlet. Langkah ini boleh dicapai menggunakan rangka kerja atau terus menggunakan objek XMLHttpRequest.
Selain itu, sebaiknya tulis nama kelas yang akan dipanggil dan laluan pakej lengkap kelas dalam fail konfigurasi
Di sini kita menganggap bahawa nama kelas ialah Hello, nama kaedah ialah sayHello, dan kaedah sayHello tidak mengambil parameter, dan laluan kelas ialah com.demo.Hello
Fail konfigurasi AjaxConfig.properties
Hello = com.demo.Hello
Jadi parameter yang diluluskan ialah class=Hello&method=sayHello
Lakukan pemprosesan berikut dalam servlet:
String className=request.getParameter("classname");
String methodName=request.getParameter("method");
String classPath=null;
.
Baca fail konfigurasi, keluarkan nilai yang sepadan dengan className dan masukkan ke dalam pembolehubah classPath (terdapat banyak cara untuk melakukan langkah ini, cara membaca fail konfigurasi, anda boleh mencari maklumat dalam talian, terdapat banyak, saya tidak akan pergi ke butiran)
.
Class c=Class.forName(classPath); //Muatkan kelas yang anda tentukan
Param kelas[]=Kelas baharu[0]; //Parameter kaedah ialah 0
Kaedah m=null;
String returnValue=null; //Return value
cuba {
m = c.getMethod("sayHello",param); //Dapatkan kaedah yang ditentukan dalam kelas yang anda tentukan
} tangkapan (SecurityException e) {
//TODO Blok tangkapan yang dijana secara automatik
e.printStackTrace();
} tangkapan (NoSuchMethodException e) {
//TODO Blok tangkapan yang dijana secara automatik
e.printStackTrace();
}
cuba {
returnValue=(String)m.invoke(c.newInstance(), new Object[0]); //Panggil kaedah yang anda tentukan
} tangkapan (IllegalArgumentException e) {
//TODO Blok tangkapan yang dijana secara automatik
e.printStackTrace();
} tangkapan (IllegalAccessException e) {
//TODO Blok tangkapan yang dijana secara automatik
e.printStackTrace();
} tangkapan (InvocationTargetException e) {
//TODO Blok tangkapan yang dijana secara automatik
e.printStackTrace();
} tangkapan (InstantiationException e) {
//TODO Blok tangkapan yang dijana secara automatik
e.printStackTrace();
}
Akhir sekali, kembalikan nilai returnValue kepada pelanggan
Kelas Hello.java
Kelas awam Hello
{
String awam sayHello()
{
balas "hello";
}
}
Jika anda tidak faham, tambah 67919823 dan mari kita bincangkan bersama
Untuk memudahkan interaksi antara halaman web dan aplikasi Android, sistem Android menyediakan mekanisme untuk skrip web JavaScript dalam WebView untuk memanggil kaedah kelas Java. Cuma panggil kaedah addJavascriptInterface untuk memetakan objek Java ke objek JavaScript.
1. Memetakan objek Java ke objek JavaScript
Kod adalah seperti berikut:
mWebView = (WebView) findViewById(R.id.wv_content);
mWebView.setVerticalScrollbarOverlay(true);
tetapan WebSettings akhir = mWebView.getSettings();
tetapan.setSupportZoom(benar);
//WebView mendayakan pelaksanaan skrip Javascript
settings.setJavaScriptEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
//Peta objek Java ke objek Javascript bernama "js2java"
//Dalam JavaScript, anda boleh memanggil kaedah objek Java melalui "window.js2java"
mWebView.addJavascriptInterface(JSInvokeClass(), "js2java");
Kod adalah seperti berikut:
/**Antara muka panggilan Javascript halaman web**/
kelas JSInvokeClass {
kekosongan awam kembali() {
activity.finish();
}
}
2. Contoh JavaScript memanggil objek Java
Panggil kaedah belakang objek kelas JSInvokeClass di atas, seperti berikut:
Salin kod Kod adalah seperti berikut:
window.js2java.back();
Sukar! Satu meja depan dan satu lagi meja belakang, tetapi AJAX menyedari idea ini! . Di bawah ialah contoh AJAX:
//Dokumen JavaScript
var xmlHttp;
fungsi GetXmlHttpObject()
{
var xhr=null;
cuba
{
// Firefox, Opera 8.0+, Safari
xhr= XMLHttpRequest baharu();
}tangkap (e)
{
// Internet Explorer
cuba
{
xhr=New ActiveXObject("Msxml2.XMLHTTP");
}tangkap (e)
{
xhr=new ActiveXObject("Microsoft.XMLHTTP");
}
}
kembali xhr;
}
fungsi getDataByDept(str)
{
xmlHttp = GetXmlHttpObject();
jika(xmlHttp==null)
{
makluman ("Maaf! Penyemak imbas anda tidak menyokong AJAX!");
kembali;
}
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);
}
keadaan fungsiDiubah()
{
jika(xmlHttp.readyState == 4)
{
hasil var = xmlHttp.responseText;
document.getElementById("select_employees"). innerHTML = result;
}
}
Ideanya adalah untuk memanggil kaedah JS melalui peristiwa kawalan HTML, dan memanggil skrip pelayan melalui kaedah terbuka objek httprequest dalam proses JS ----- Dalam skrip pelayan, anda boleh menggunakan kaedah javabean dan luluskan hasil pengiraan kepada JS Curves merealisasikan fikiran anda
Atas ialah kandungan terperinci Bagaimana untuk memanggil kaedah kelas JAVA dalam js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!