1. js中可以調用java代碼嗎
js不能直接調用java代碼。
可以通過頁面提交後台的方式,間接調用後台的服務java代碼。
也可以通過ajax的方式,調用後台的服務java代碼。
兩種方式稍有差別,不過都是前後台的通信交互。
2. 如何在android平台上使用js直接調用Java方法
通過webview進行js調用
webSettings.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(newDemoJavaScriptInterface(),"demo");
{
DemoJavaScriptInterface(){
}
/**
*ThisisnotcalledontheUIthread.Postarunnabletoinvoke
*loadUrlontheUIthread.
*/
publicvoidclickOnAndroid(){
mHandler.post(newRunnable(){
publicvoidrun(){
mWebView.loadUrl("javascript:wave()");
}
});
}
}
js調用
window.demo.clickOnAndroid()
3. 如何在android平台上使用js直接調用Java方法
在布局文件里添加一個WebView,設置它的id為webview。
然後在java中:
WebViewweb=(WebView)findViewById(R.id.webview);
web.getSettings().setJavaScriptEnabled(true);
web.loadUrl("
);
web.addJavascriptInterface(newJSinterface,"interface");//interface可以自定義,在調用時使用這個,第一個參數是下面的類
再建一個內部類:
publicclassJSinterface
{
publicvoidmethod()
{
Toast.maketext(this,"JavaScript",0).show();
}
}
可以在網頁webview 中載入的網頁中 調用 可以這樣調用:
interface.method();
4. 如何在Android平台上使用JS直接調用Java方法
在Cocos2d-js 3.0beta中加入了一個新特性,在Android平台上我們可以通過反射直接在js中調用java的靜態方法。它的使用方法很簡單:
var o = jsb.reflection.callStaticMethod(className, methodName, methodSignature, parameters...)
在callStaticMethod方法中,我們通過傳入Java的類名,方法名,方法簽名,參數就可以直接調用Java的靜態方法,並且可以獲得Java方法的返回值。下面介紹的類名和方法簽名可能會有一點奇怪,但是Java的規范就是如此的。
類名
參數中的類名必須是包含Java包路徑的完整類名,例如我們在org.cocos2dx.javascript這個包下面寫了一個Test類:
package org.cocos2dx.javascript;
public class Test {
public static void hello(String msg){
System.out.println(msg);
}
public static int sum(int a, int b){
return a + b;
}
public static int sum(int a){
return a + 2;
}
}
那麼這個Test類的完整類名應該是org/cocos2dx/javascript/Test,注意這里必須是斜線/,而不是在Java代碼中我們習慣的點。
方法名
方法名很簡單,就是方法本來的名字,例如sum方法的名字就是sum。
方法簽名
方法簽名稍微有一點復雜,最簡單的方法簽名是()V,它表示一個沒有參數沒有返回值的方法。其他一些例子:
(I)V表示參數為一個int,沒有返回值的方法;
(I)I表示參數為一個int,返回值為int的方法;
(IF)Z表示參數為一個int和一個float,返回值為boolean的方法;
現在有一些理解了吧,括弧內的符號表示參數類型,括弧後面的符號表示返回值類型。因為Java是允許函數重載的,可以有多個方法名相同但是參數返回值不同的方法,方法簽名正是用來幫助區分這些相同名字的方法的。
5. 怎麼在js調用java方法
如果你是在JSP頁面里,在js代碼里可以用<% ...java代碼....%>
不過不建議混編,最好JS和JAVA代碼分開,JS可以通過AJAX調用訪問JAVA提供的介面,利於後期維護。
題主的問題回答:
方法1.提供一個servlet ,在servlet中調用getAllEmployees()
方法,把響應的值寫入response,修改響應頭為application/json,在頁面使用ajax訪問servlet,最後處理響應值
方法2..提供一個servlet ,在servlet中調用getAllEmployees()
方法,把響應的值存入request作用域,在JSP頁面中使用EL表達式獲取值
6. js 怎麼調用JAVA類的方法具體代碼
用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,我們一起討論呀