
正文
js调用java代码桥 js 调用 java
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
如何在JAVASCRIPT调用Android JAVA函数
首先是网页:
%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%
!DOCTYPE HTML
html
head
meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
titlejs和android相互调用/title
head
script type="text/javascript" language="javascript"
//调用java方法jsCallJava()
function showHtmlcallJava() {
var str = window.android.jsCallJava();
document.getElementById("info1").value = str;
}
//调用java方法jsCallJavaWithParams(String var),带参数
function showHtmlcallJava2() {
var str = window.android.jsCallJavaWithParams("Devin Chen");
document.getElementById("info2").value = str;
}
//提供给java调用的方法
function show() {
document.getElementById("id_input").value = "Java调用Html中的方法";
}
//提供给java调用的方法,带参数
function showWithParam(param) {
document.getElementById("id_input2").value = "Java调用Html中的方法: " + param;
}
/script
/head
body
input id="info1" style="width: 90%" type="text" value="null" /br
input type="button" value="Html调用Java方法" onclick="showHtmlcallJava()" /br
input id="info2" style="width: 90%" type="text" value="null" /br
input type="button" value="Html调用带参数的Java方法" onclick="showHtmlcallJava2()" /br
input id="id_input" style="width: 90%" type="text" value="null" /br
input type="button" value="Java调用Html方法" onclick="window.android.javaCallJavaScript()" /br
input id="id_input2" style="width: 90%" type="text" value="null" /br
input type="button" value="Java调用带参数的Html方法" onclick="window.android.javaCallJavaScriptWithParams()" /
/body
/html
Android部分的布局就一个WebView,MainActivity源代码:
/**
* java方法和javascript方法的相互调用
*/
public class MainActivity extends AppCompatActivity {
private static final String url = "";
private WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
mWebView = (WebView) findViewById(R.id.web_main);
WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDefaultTextEncodingName("utf-8");
mWebView.loadUrl(url);
mWebView.setWebViewClient(new WebViewClient());
//这两句是必须的,"android"就是jsp中调用方法时window后面的对象
Object obj = getObject();
mWebView.addJavascriptInterface(obj, "android");
}
private Object getObject() {
Object obj = new Object() {
/**
* html中的JavaScript调用Java方法
* 注解是必须的
* @return
*/
@JavascriptInterface
public String jsCallJava() {
return "JavaScript调用Java方法";
}
/**
* html中的JavaScript调用带参数的Java方法
* 注解是必须的
* @return
*/
@JavascriptInterface
public String jsCallJavaWithParams(String var) {
return "JavaScript调用带参数的Java方法" + var;
}
/**
* java调用html中的方法,遗憾的是不知道有什么办法可以拿到返回值
*/
@JavascriptInterface
public void javaCallJavaScript() {
runOnUiThread(new Runnable() {
@Override
public void run() {
mWebView.loadUrl("javascript:show()");
}
});
}
/**
* java调用html中的方法,并且传递参数,这个有大用
*/
@JavascriptInterface
public void javaCallJavaScriptWithParams() {
runOnUiThread(new Runnable() {
@Override
public void run() {
mWebView.loadUrl("javascript:showWithParam('baoge')");
}
});
}
};
return obj;
}
}
相关问答
Q1: js 怎么调用JAVA类的方法?具体代码?
用ajax的方法.
首先将要调用的类名和方法名作为参数传给某个servlet.这一步的方法有许多种,用框架,或者直接用xmlHttpRequest对象.
另外,要调用的类名和类的完整包路径最好写在配置文件里
这里假设类名为Hello,方法名为sayHello,并且sayHello方法不带参数,类路径为com.demo.Hello
配置文件AjaxConfig.properties
Hello = com.demo.Hello
于是传入的参数为 class=Hellomethod=sayHello
在servlet中作如下处理:
String className=request.getParameter("classname");
String methodName=request.getParameter("method");
String classPath=null;
.
读取配置文件,取出className所对应的值放入classPath变量中(这一步方法有很多种,怎么读配置文件,可以网上找资料,很多的,js调用java代码桥我就不细写js调用java代码桥了)
.
Class c=Class.forName(classPath);//加载js调用java代码桥你所指定的类
Class param[]=new Class[0];//方法的参数为0个
Method m=null;
String returnValue=null;//返回值
try {
m = c.getMethod("sayHello",param);//获取js调用java代码桥你所指定的类中的指定方法
} 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]);//调用js调用java代码桥你所指定的方法
} 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,我们一起讨论呀
Q2: js怎么调用java 类中方法?
\r\n\r\n//上面我用java代码根据id取得了一个user类的实体 u 下面就可以用js操作显示等等\r\nalert();//在窗口打印一个用户名\r\n\r\n
Q3: js怎么调用JAVA方法
一般的浏览器中是无法通过js调用本地java程序的,但是可以调用嵌入到网页的applet的方法。交互方式如下:
applet codebase = "." width = "400" height = "400"
name= "MyApplet" code = "test.applets.MyApplet1.class"
script
// js访问applet属性:document.appletName.appletField (属性必须是public的)
// js访问Applet方法:document.appletName.appletMethod (方法必须是public的)
function showLable{
// 调用test.applets.MyApplet1类的invokeByJS方法
document.applets["MyApplet"].invokeByJS('myvalue');
}
/script
Q4: js中可以调用java代码吗
js不能直接调用java代码。
可以通过页面提交后台的方式,间接调用后台的服务java代码。
也可以通过ajax的方式,调用后台的服务java代码。
两种方式稍有差别,不过都是前后台的通信交互。
Q5: 怎么在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表达式获取值
关于js调用java代码桥和js 调用 java的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。








