首页 > 代码库 > JAVA调用JS函数

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

以此记录一下。