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("
"); 
        } 
        bufferreader.close(); 
        filereader.close(); 
        return script.toString(); 
    }
}


 

在Java类中直接run就能够得到例如以下结果:

res:A

在此录制。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

原文地址:https://www.cnblogs.com/zfyouxi/p/4615074.html