ScriptEngine执行javascript片段
来源:互联网 发布:ftp端口22 编辑:程序博客网 时间:2024/06/05 03:47
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;/** * * @date 2016年10月12日 下午5:14:34 */public class ScriptEngineTest { public static void main(String[] args) throws Exception { final ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); test(scriptEngineManager); } public static void test(ScriptEngineManager scriptEngineManager) throws ScriptException, NoSuchMethodException, InterruptedException { final 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"); final String str = "msg += '!!!';var user = {name:'tom',age:23,hobbies:['football','basketball']}; var name = user.name; var hb = user.hobbies[1];"; engine.eval(str); final String msg = (String) engine.get("msg"); final String name = (String) engine.get("name"); final 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; }"); final Invocable jsInvoke = (Invocable) engine; System.out.println("1+2="+jsInvoke.invokeFunction("add", 1,2)); final Object result1 = jsInvoke.invokeFunction("add", new Object[] { 10, 5 }); System.out.println(result1); // 3 final Adder adder = jsInvoke.getInterface(Adder.class); final Adder add=jsInvoke.getInterface(Adder.class); System.out.println("1+2="+add.add(1, 2)); final int result2 = adder.add(10, 35); System.out.println(result2); // 4 engine.eval("function run() {print('www.java2s.com');}"); final Invocable invokeEngine = (Invocable) engine; final Runnable runner = invokeEngine.getInterface(Runnable.class); final Thread t = new Thread(runner); t.start(); t.join(); // 5 final String jsCode = "importPackage(java.util);var list2 = Arrays.asList(['A', 'B', 'C']); "; engine.eval(jsCode); final List<String> list2 = (List<String>) engine.get("list2"); for (String val : list2) { System.out.println(val); } } public void printEngineDeatail() throws IllegalArgumentException, IllegalAccessException{ final ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); final 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
- ScriptEngine执行javascript片段
- java 中使用ScriptEngine执行javascript脚本代码和使用中应该注意的事项
- ScriptEngine
- ScriptEngine
- java执行字符串数学表达式 ScriptEngine
- 在Java中使用ScriptEngine调用javascript
- 执行AJAX返回HTML片段中的JavaScript脚本
- JDK1.8中如何用ScriptEngine动态执行JS
- JavaScript/Ajax/JQuery知识点(BOM/DOM/ScriptEngine/JS引擎)
- java ScriptEngine 使用 (支持JavaScript脚本,eval()函数等)
- Eclipse执行片段
- javascript 代码片段 框架
- Javascript DocumentFragment 文档片段
- javascript 代码片段
- JavaScript 代码片段
- 实用代码片段--Javascript
- java ScriptEngine;
- 接口ScriptEngine
- 悬镜加入中国信息无障碍产品联盟,助力安全加固产品无障碍发展
- 多线程售票
- ajax+struts2实现验证用户名是否已经被注册
- 互联网架构为什么要做服务化?
- mysql 分组查询每组前几行的某列数据
- ScriptEngine执行javascript片段
- Anaconda不同版本下共存使用,针对Jupyter
- 纯JAVA实现Online Judge--6.完整源码
- java 探讨类的加载器
- 【算法】程序猿不写代码是不对的74
- Git常用命令
- redis存储和查询的java实现
- chrome安装插件,安装Postman
- 在java编程调试中出现的一些问题和解决方案