java调用js脚本

参考:https://blog.csdn.net/hao65103940/article/details/80769800#

https://juejin.im/post/5b66a4afe51d4519610e3faf

js可以嵌套在html中被执行



	
		
	

执行结果:

java调用js脚本_第1张图片

今天在开发中使用到了js和Java的交互,平时我们用的比较多的就是js调用Java的方法。突然发现要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();   
    }  
}  

 

你可能感兴趣的:(code)