js怎么调用JAVA方法

JavaScript018

js怎么调用JAVA方法,第1张

一般的浏览器中是无法通过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>

要在java中执行js代码,首先明白,java不支持浏览器本身的方法。支持自定义的js方法,否则会报错

先新建一个js文件:jsss.js

内容如下:

function aa(a,b){    return a+b

}

然后在java中写代码:

public class ZipTest {

public static void main(String[] args) throws Exception {

ScriptEngineManager manager = new ScriptEngineManager()

ScriptEngine engine = manager.getEngineByName("js")

String jsFileName="G:\\javaPro\\zmwmcc\\WebRoot\\jsss.js"

FileReader reader = new FileReader(jsFileName)  // 执行指定脚本             engine.eval(reader)

if(engine instanceof Invocable) {

Invocable invoke = (Invocable)engine   // 调用merge方法,并传入两个参数

Double c = (Double)invoke.invokeFunction("aa", 2, 3)//调用了js的aa方法

System.out.println(c)

}

// engine.eval("alert(\"js alert\")")   // 不能调用浏览器中定义的js函数 // 错误,会抛出alert引用不    }

}