美文网首页
Java使用ScriptEngineManager调用js脚本

Java使用ScriptEngineManager调用js脚本

作者: IOXusu | 来源:发表于2023-02-21 17:33 被阅读0次

Android 由于安卓中没有ScriptEngineManager ,需要增加依赖

implementation 'io.apisense:rhino-android:1.1.1'
function convert (str)  
{  
  var res = encodeURI(str);
  return res;  
 
} 
 
import org.springframework.core.io.ClassPathResource;
 
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import java.io.*;
 
 
/**
 * @author reshui
 * @version 1.0
 * @date 2021/12/10
 */
public class JsUtil {
 
 
    public static void main(String[] args) throws Exception {
        String x="my test.asp?name=ståle&car=saab";
        testJSFile(x);
    }
 
 
    public static String testJSFile(String str) 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[] { str });
        System.out.println("res:" + res);
        return (String) res;
    }
 
    /**
     * 文件流读取js
     * @return
     * @throws IOException
     */
    private static String readJSFile() throws IOException {
        //maven工程resources/js/c.js
        ClassPathResource resource = new ClassPathResource("js/"+"c.js");
        StringBuffer script = new StringBuffer();
        //获得文件流,因为在jar文件中,不能直接通过文件资源路径拿到文件,但是可以在jar包中拿到文件流
        InputStream inputStream = resource.getInputStream();
        BufferedReader bufferreader = new BufferedReader(new InputStreamReader(inputStream));
        String tempString = null;
        while ((tempString = bufferreader.readLine()) != null) {
            script.append(tempString).append("\n");
        }
        bufferreader.close();
        inputStream.close();
        return script.toString();
    }
 
    /**
     * 字符文件读取
     * @return
     * @throws Exception
     */
    private static String readJSFilex() throws Exception {
        StringBuffer script = new StringBuffer();
        File file = new File("C:\\Users\\acer\\Desktop\\c.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使用ScriptEngineManager调用js脚本

      本文链接:https://www.haomeiwen.com/subject/pjcokdtx.html