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

以此记录一下。

你可能感兴趣的:(java程序,javacript)