用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中文网其他相关文章!