java调用js执行js文件
2013-02-06 18:05
288 查看
/*
*Written by:weidan 2013-2-7
*QQ:956698821
*Email:weidanhappy@sina.cn
*Remark:This class is used to complete ......
*/
package Test;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
import javax.script.Bindings;
import javax.script.Compilable;
import javax.script.CompiledScript;
import javax.script.Invocable;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class TestScript {
public static void main(String[] args) throws ScriptException,
NoSuchMethodException, IOException {
test2();
}
public static void test1() throws ScriptException {
ScriptEngine engine = new ScriptEngineManager()
.getEngineByName("javascript");
Compilable compilable = (Compilable) engine;
Bindings bindings = engine.createBindings(); // Local级别的Binding
String script = "function add(op1,op2){return op1+op2} add(a, b)"; // 定义函数并调用
CompiledScript JSFunction = compilable.compile(script); // 解析编译脚本函数
bindings.put("a", 1);
bindings.put("b", 2); // 通过Bindings加入参数
Object result = JSFunction.eval(bindings);
System.out.println(result); // 调用缓存着的脚本函数对象,Bindings作为参数容器传入
}
public static void test2() throws ScriptException, NoSuchMethodException, FileNotFoundException {
int param = 10;
// 建立一个javascript的执行引擎
ScriptEngine scriptEngine = new ScriptEngineManager()
.getEngineByName("javascript");
// 建立上下文变量
Bindings bind = scriptEngine.createBindings();
bind.put("factor", 1);
scriptEngine.setBindings(bind, ScriptContext.ENGINE_SCOPE);
FileReader reader = new FileReader("d://test.js");
scriptEngine.eval(reader);
if (scriptEngine instanceof Invocable) {
Invocable in = (Invocable) scriptEngine;
Double result = (Double) in.invokeFunction("square", param);
System.out.println("number " + param + " square result is "
+ result);
}
}
public static void test3() throws ScriptException, IOException, NoSuchMethodException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
String jsFileName = "d://test.js";
// 读取js文件
FileReader reader = new FileReader(jsFileName);
// 执行指定脚本
engine.eval(reader);
if (engine instanceof Invocable) {
Invocable invoke = (Invocable) engine;
// 调用merge方法,并传入两个参数 // c = merge(2, 3);
Double c = (Double) invoke.invokeFunction("merge", 2, 3);
System.out.println("c = " + c);
}
reader.close();
}
}
*Written by:weidan 2013-2-7
*QQ:956698821
*Email:weidanhappy@sina.cn
*Remark:This class is used to complete ......
*/
package Test;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
import javax.script.Bindings;
import javax.script.Compilable;
import javax.script.CompiledScript;
import javax.script.Invocable;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class TestScript {
public static void main(String[] args) throws ScriptException,
NoSuchMethodException, IOException {
test2();
}
public static void test1() throws ScriptException {
ScriptEngine engine = new ScriptEngineManager()
.getEngineByName("javascript");
Compilable compilable = (Compilable) engine;
Bindings bindings = engine.createBindings(); // Local级别的Binding
String script = "function add(op1,op2){return op1+op2} add(a, b)"; // 定义函数并调用
CompiledScript JSFunction = compilable.compile(script); // 解析编译脚本函数
bindings.put("a", 1);
bindings.put("b", 2); // 通过Bindings加入参数
Object result = JSFunction.eval(bindings);
System.out.println(result); // 调用缓存着的脚本函数对象,Bindings作为参数容器传入
}
public static void test2() throws ScriptException, NoSuchMethodException, FileNotFoundException {
int param = 10;
// 建立一个javascript的执行引擎
ScriptEngine scriptEngine = new ScriptEngineManager()
.getEngineByName("javascript");
// 建立上下文变量
Bindings bind = scriptEngine.createBindings();
bind.put("factor", 1);
scriptEngine.setBindings(bind, ScriptContext.ENGINE_SCOPE);
FileReader reader = new FileReader("d://test.js");
scriptEngine.eval(reader);
if (scriptEngine instanceof Invocable) {
Invocable in = (Invocable) scriptEngine;
Double result = (Double) in.invokeFunction("square", param);
System.out.println("number " + param + " square result is "
+ result);
}
}
public static void test3() throws ScriptException, IOException, NoSuchMethodException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
String jsFileName = "d://test.js";
// 读取js文件
FileReader reader = new FileReader(jsFileName);
// 执行指定脚本
engine.eval(reader);
if (engine instanceof Invocable) {
Invocable invoke = (Invocable) engine;
// 调用merge方法,并传入两个参数 // c = merge(2, 3);
Double c = (Double) invoke.invokeFunction("merge", 2, 3);
System.out.println("c = " + c);
}
reader.close();
}
}
相关文章推荐
- Java调用某一js文件中的方法,执行并返回结果
- java调用js文件并执行方法示例
- 通过adb命令在Android设备中执行Java命令, 并调用so文件。
- nodejs hello world (调用文件执行没反应)
- java程序调用ffmpeg执行视频文件格式转换flv
- 在 asp.net .cs 文件中调用js注意(asp.net .cs 文件中调用js 不执行)
- java调用命令行执行mysqldump和执行sql文件恢复命令
- java process调用可执行文件(windows 或者 linux)
- js调用可执行性(exe)文件
- java Runtime Process调用可执行文件,子进程阻塞
- Java调用批处理或可执行文件
- 用java程序调用ffmpeg执行视频文件格式转换flv
- java中的IO操作与java调用CMD执行exe文件的问题
- java调用sqlplus执行批量脚本获得输出结果和调用.bat文件
- [Jmeter]通过批处理调用java,java从CSV动态读取登录的用户名和密码,并将其作为参数组合成字符串,写入外部.bat文件,然后通过Java执行这个外部批处理文件
- 简单地用Java调用系统上的可执行文件
- Java如何调用可执行文件和批处理命令
- java之如何实现调用启动一个可执行文件,exe
- JAVA调用exe可执行文件
- Linux(centos 6.5) 调用java脚本以及定时执行的脚本实例及配置文件详解