首页 > 编程语言 > 详细

JAVA调用JS函数

时间:2014-08-06 10:32:21      阅读:358      评论:0      收藏:0      [点我收藏+]

今天在开发中使用到了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调用JS函数,布布扣,bubuko.com

JAVA调用JS函数

原文:http://blog.csdn.net/wx3957156/article/details/38396351

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!