JAVA调用JS函数
今天在开发中使用到了js和Java的交互,平时我们用的比较多的就是js调用Java的方法,可以使用dwr、Ajax、jquery。突然发现要Java调用js的话还真没有见过,今天上网查询了下资料,顺便总结一下:
前提条件:jdk1.6才支持,1.6以前的就不行了。
js代码如下:
function convert (id,str) { if ('505041'==id) { return str; } else { return "A"; } }
Java代码如下:
package com.sc; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; public class JsTest { public static void main(String[] args) throws Exception { testJSFile(); } private static void testJSFile() throws Exception { ScriptEngineManager mgr = new ScriptEngineManager(); ScriptEngine engine = mgr.getEngineByName("javascript"); engine.eval(readJSFile()); Invocable inv = (Invocable) engine; Object res = (Object) inv.invokeFunction("convert", new String[] { "5050412", "D" }); System.out.println("res:" + res); } private static String readJSFile() throws Exception { StringBuffer script = new StringBuffer(); File file = new File("E:\\workspace\\test4\\WebRoot\\test.js"); FileReader filereader = new FileReader(file); BufferedReader bufferreader = new BufferedReader(filereader); String tempString = null; while ((tempString = bufferreader.readLine()) != null) { script.append(tempString).append("\n"); } bufferreader.close(); filereader.close(); return script.toString(); } }
在Java类中直接run就可以得到如下结果:
res:A
以此记录一下。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。