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

以此记录一下。

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值