Java实现对JavaScript脚本文件的读取和执行
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的功能!
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: ThinkPHP5快速入门
- 下一篇: 相对URL不能识别%2F