您的位置:首页 > Web前端 > JavaScript

Java实现对JavaScript脚本文件的读取和执行

2017-12-26 17:07 417 查看
package com.amxc.utils;

import javax.script.*;
import java.io.FileReader;
import java.net.URL;
import java.util.Scanner;

/**
* 实现对脚本文件的定义
* 运用此类需要最低JDK编译为1.6+
* @author mr_yi
* 下午3:57
*/
public class scriptDemo2 {

public static void main(String[] args) throws Exception{
/*mimeType为传输的文件类型,如 application/javascript*/
/*获取执行JavaScript的执行引擎*/
ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
/*为文件注入全局变量*/
Bindings bindings = engine.createBindings();
bindings.put("factor", 2);
/*设置绑定参数的作用域*/
engine.setBindings(bindings,ScriptContext.ENGINE_SCOPE);

Scanner scanner = new Scanner(System.in);
/*开始等待用户输入->体现出不需要重复运行JVM就可以实现脚本文件的更换*/
while(scanner.hasNextInt()){
/*只有当用户输入的是整数型时才会被执行*/
int first = scanner.nextInt();
int second = scanner.nextInt();
System.out.println("当前输入的参数为: "+first+":"+second);
/*执行js文件代码*/
URL url = Thread.currentThread().getContextClassLoader().getResource("");
String path;
if (url!=null){
path = url.getPath();
engine.eval(new FileReader(path+"/script_engine.js"));
/*查看是否可以调用方法*/
if (engine instanceof Invocable){
Invocable in = (Invocable) engine;
Double result = (double)in.invokeFunction("formula",first,second);
System.out.println("输出结果为"+result);
}
}

}

}
}

script_engine.js文件如下:

/*实现java对脚本语言的支持*/

/**
* 通过java对factor因子进行初始化,然后计算出答案
* 对脚本语言的修改不需要重新启动编译器
* @param var1
* @param var2
* @return {*}
*/

var factor;
function formula(var1,var2){
return var1+var2*factor;
}

该功能实现Java对脚本文件的读取和执行,有助于扩展Java的功能!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java