ScriptEngineTest
来源:互联网 发布:长沙联通网络好不好 编辑:程序博客网 时间:2024/04/28 06:50
import java.util.List;
import javax.script.Invocable;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineFactory;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import com.niuwa.p2p.core.file.PublciNWFileBuilder;
/**
*
* @date 2016年10月12日 下午5:14:34
*/
public class ScriptEngineTest {
public static void main(String[] args) throws Exception {
ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
test(scriptEngineManager);
}
public static void test(ScriptEngineManager scriptEngineManager) throws ScriptException, NoSuchMethodException, InterruptedException {
ScriptEngine engine = scriptEngineManager.getEngineByName("javascript");
// ScriptContext public static final int ENGINE_SCOPE = 100;
// ScriptContext public static final int GLOBAL_SCOPE = 200;
// 1
engine.put("msg", "just a test");
String str = "msg += '!!!';var user = {name:'tom',age:23,hobbies:['football','basketball']}; var name = user.name; var hb = user.hobbies[1];";
engine.eval(str);
String msg = (String) engine.get("msg");
String name = (String) engine.get("name");
String hb = (String) engine.get("hb");
System.out.println(msg);
System.out.println(name + ":" + hb);
// 2
engine.eval("function add (a, b) {c = a + b; return c; }");
Invocable jsInvoke = (Invocable) engine;
System.out.println("1+2="+jsInvoke.invokeFunction("add", 1,2));
Object result1 = jsInvoke.invokeFunction("add", new Object[] { 10, 5 });
System.out.println(result1);
// 3
Adder adder = jsInvoke.getInterface(Adder.class);
Adder add=jsInvoke.getInterface(Adder.class);
System.out.println("1+2="+add.add(1, 2));
int result2 = adder.add(10, 35);
System.out.println(result2);
// 4
engine.eval("function run() {print('www.java2s.com');}");
Invocable invokeEngine = (Invocable) engine;
Runnable runner = invokeEngine.getInterface(Runnable.class);
Thread t = new Thread(runner);
t.start();
t.join();
// 5
String jsCode = "importPackage(java.util);var list2 = Arrays.asList(['A', 'B', 'C']); ";
engine.eval(jsCode);
List<String> list2 = (List<String>) engine.get("list2");
for (String val : list2) {
System.out.println(val);
}
}
public void printEngineDeatail() throws IllegalArgumentException, IllegalAccessException{
ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
List<ScriptEngineFactory> engineFactoryList = scriptEngineManager.getEngineFactories();
System.out.println("------ScriptEngineFactory-----");
for (ScriptEngineFactory scriptEngineFactory : engineFactoryList) {
System.out.println("-----------------属性 ------------------");
ReflectTest.printAllData(scriptEngineFactory);
System.out.println(scriptEngineFactory.getLanguageName());
System.out.println(scriptEngineFactory.getEngineName());
System.out.println(scriptEngineFactory.getEngineVersion());
System.out.println(scriptEngineFactory.getLanguageName());
System.out.println(scriptEngineFactory.getLanguageVersion());
System.out.println("-----------------属性 ------------------");
}
// -----------------属性 ------------------
// field name:names,value:[juel]
// field name:extensions,value:[juel]
// field name:mimeTypes,value:[]
// JSP 2.1 EL
// juel
// 1.0
// JSP 2.1 EL
// 2.1
// -----------------属性 ------------------
// -----------------属性 ------------------
// field name:names,value:[js, rhino, JavaScript, javascript, ECMAScript, ecmascript]
// field name:mimeTypes,value:[application/javascript, application/ecmascript, text/javascript, text/ecmascript]
// field name:extensions,value:[js]
// ECMAScript
// Mozilla Rhino
// 1.7 release 3 PRERELEASE
// ECMAScript
// 1.8
// -----------------属性 ------------------
System.out.println("-----------");
}
}
interface Adder {
int add(int a, int b);
}
import javax.script.Invocable;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineFactory;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import com.niuwa.p2p.core.file.PublciNWFileBuilder;
/**
*
* @date 2016年10月12日 下午5:14:34
*/
public class ScriptEngineTest {
public static void main(String[] args) throws Exception {
ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
test(scriptEngineManager);
}
public static void test(ScriptEngineManager scriptEngineManager) throws ScriptException, NoSuchMethodException, InterruptedException {
ScriptEngine engine = scriptEngineManager.getEngineByName("javascript");
// ScriptContext public static final int ENGINE_SCOPE = 100;
// ScriptContext public static final int GLOBAL_SCOPE = 200;
// 1
engine.put("msg", "just a test");
String str = "msg += '!!!';var user = {name:'tom',age:23,hobbies:['football','basketball']}; var name = user.name; var hb = user.hobbies[1];";
engine.eval(str);
String msg = (String) engine.get("msg");
String name = (String) engine.get("name");
String hb = (String) engine.get("hb");
System.out.println(msg);
System.out.println(name + ":" + hb);
// 2
engine.eval("function add (a, b) {c = a + b; return c; }");
Invocable jsInvoke = (Invocable) engine;
System.out.println("1+2="+jsInvoke.invokeFunction("add", 1,2));
Object result1 = jsInvoke.invokeFunction("add", new Object[] { 10, 5 });
System.out.println(result1);
// 3
Adder adder = jsInvoke.getInterface(Adder.class);
Adder add=jsInvoke.getInterface(Adder.class);
System.out.println("1+2="+add.add(1, 2));
int result2 = adder.add(10, 35);
System.out.println(result2);
// 4
engine.eval("function run() {print('www.java2s.com');}");
Invocable invokeEngine = (Invocable) engine;
Runnable runner = invokeEngine.getInterface(Runnable.class);
Thread t = new Thread(runner);
t.start();
t.join();
// 5
String jsCode = "importPackage(java.util);var list2 = Arrays.asList(['A', 'B', 'C']); ";
engine.eval(jsCode);
List<String> list2 = (List<String>) engine.get("list2");
for (String val : list2) {
System.out.println(val);
}
}
public void printEngineDeatail() throws IllegalArgumentException, IllegalAccessException{
ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
List<ScriptEngineFactory> engineFactoryList = scriptEngineManager.getEngineFactories();
System.out.println("------ScriptEngineFactory-----");
for (ScriptEngineFactory scriptEngineFactory : engineFactoryList) {
System.out.println("-----------------属性 ------------------");
ReflectTest.printAllData(scriptEngineFactory);
System.out.println(scriptEngineFactory.getLanguageName());
System.out.println(scriptEngineFactory.getEngineName());
System.out.println(scriptEngineFactory.getEngineVersion());
System.out.println(scriptEngineFactory.getLanguageName());
System.out.println(scriptEngineFactory.getLanguageVersion());
System.out.println("-----------------属性 ------------------");
}
// -----------------属性 ------------------
// field name:names,value:[juel]
// field name:extensions,value:[juel]
// field name:mimeTypes,value:[]
// JSP 2.1 EL
// juel
// 1.0
// JSP 2.1 EL
// 2.1
// -----------------属性 ------------------
// -----------------属性 ------------------
// field name:names,value:[js, rhino, JavaScript, javascript, ECMAScript, ecmascript]
// field name:mimeTypes,value:[application/javascript, application/ecmascript, text/javascript, text/ecmascript]
// field name:extensions,value:[js]
// ECMAScript
// Mozilla Rhino
// 1.7 release 3 PRERELEASE
// ECMAScript
// 1.8
// -----------------属性 ------------------
System.out.println("-----------");
}
}
interface Adder {
int add(int a, int b);
}
0 0
- ScriptEngineTest
- 责任链模式解决请假问题
- 【并行计算-CUDA开发】CUDA线程、线程块、线程束、流多处理器、流处理器、网格概念的深入理解
- Eclipse中svn资源库管理
- SAP信用控制配置事物码
- 第七周项目2-建立链队算法库
- ScriptEngineTest
- 分析iOS Crash文件:符号化iOS Crash文件的3种方法
- Linux中VMware虚拟机增加磁盘空间的扩容操作[图文]
- 大数据学习笔记-------------------(17_1)
- swift中UI适配,即视图控件在导航栏下面开始显示
- web手动进行Form表单提交
- caffe学习gtest模板
- VS2010中的调试技巧
- getRequestDispatcher()与sendRedirect()的区别