使用Java处理JavaScript
来源:互联网 发布:武昌淘宝摄影 编辑:程序博客网 时间:2024/05/16 04:43
直接上代码了,没什么好说的
package com.tiamaes.gjds.script;import javax.script.Invocable;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;import javax.script.ScriptException;/** * <p>类描述: javascript处理器 </p> * <p>创建人:王成委 </p> * <p>创建时间:2015年1月22日 上午11:16:08 </p> * <p>版权说明: © 2015 Tiamaes </p> */public class JavascriptProcesser {private static ScriptEngine scriptEngine;private static final String MEDIA_TYPE = "application/javascript";/** * <p>方法描述:获取javascript引擎管理器</p> * <p>创建人: 王成委 </p> * <p>创建时间: 2015年1月10日 上午10:50:06 </p> * @param createNew * @return */public ScriptEngine getScriptEngineManager(boolean createNew){if(createNew){ScriptEngineManager mgr = new ScriptEngineManager(); return mgr.getEngineByMimeType(MEDIA_TYPE);}else if(scriptEngine == null){ScriptEngineManager mgr = new ScriptEngineManager(); scriptEngine = mgr.getEngineByMimeType(MEDIA_TYPE);}return scriptEngine;}/** * <p>方法描述:从javascript中获取变量的值</p> * <p>创建人: 王成委 </p> * <p>创建时间: 2015年1月10日 上午10:50:06 </p> * @param script * @param varName * @return * @throws ScriptException */public Object getByVariableName(String script,String varName) throws ScriptException{ScriptEngine scriptEngine = this.getScriptEngineManager(true);scriptEngine.eval(script);return scriptEngine.get(varName);}/** * <p>方法描述:执行javascript方法</p> * <p>创建人: 王成委 </p> * <p>创建时间: 2015年1月10日 上午10:50:06 </p> * @param script * @param funName * @param params * @return * @throws ScriptException * @throws NoSuchMethodException */public Object invokeFunction(String script,String funName,Object...params) throws ScriptException, NoSuchMethodException{ScriptEngine scriptEngine = this.getScriptEngineManager(true);scriptEngine.eval(script);Invocable inv = (Invocable) scriptEngine; Object obj = inv.invokeFunction(funName,params);return obj;}/** * <p>方法描述:获取js引擎</p> * <p>创建人: 王成委 </p> * <p>创建时间: 2015年1月10日 上午10:50:06 </p> * @param script * @return * @throws ScriptException */public ScriptEngine getScriptEngine(String script) throws ScriptException{ScriptEngine scriptEngine = this.getScriptEngineManager(true);scriptEngine.eval(script);return scriptEngine;}}测试方法
package com.tiamaes.gjds.script;import static org.junit.Assert.*;import javax.script.ScriptException;import org.junit.Test;/** * <p>类描述: 测试 JavascriptProcesser,仅测试{@link JavascriptProcesser#getByVariableName(String, String)} * 和{@link JavascriptProcesser#invokeFunction(String, String, Object...)}</p> * <p>创建人:王成委 </p> * <p>创建时间:2015年1月23日 下午5:50:10 </p> * <p>版权说明: © 2015 Tiamaes </p> */public class JavascriptProcesserTest {JavascriptProcesser processer = new JavascriptProcesser();/** * Test method for {@link com.tiamaes.gjds.script.JavascriptProcesser#getByVariableName(java.lang.String, java.lang.String)}. * @throws ScriptException */@Testpublic void testGetByVariableName() throws ScriptException {String script = "var name='jaune'";String value = (String) this.processer.getByVariableName(script, "name");assertEquals("jaune", value);}/** * Test method for {@link com.tiamaes.gjds.script.JavascriptProcesser#invokeFunction(java.lang.String, java.lang.String, java.lang.Object[])}. * @throws ScriptException * @throws NoSuchMethodException */@Testpublic void testInvokeFunction() throws NoSuchMethodException, ScriptException {String script = "function getName(){return 'jaune'}";String value = (String) this.processer.invokeFunction(script, "getName");assertEquals("jaune", value);}/** * Test method for {@link com.tiamaes.gjds.script.JavascriptProcesser#invokeFunction(java.lang.String, java.lang.String, java.lang.Object[])}. * @throws ScriptException * @throws NoSuchMethodException */@Testpublic void testInvokeFunctionWithParams() throws NoSuchMethodException, ScriptException {String script = "function getName(name){return name}";String value = (String) this.processer.invokeFunction(script, "getName","jaune");assertEquals("jaune", value);}}
0 0
- 使用Java处理JavaScript
- javascript使用ajax异步处理
- java ;javascript;oracle 数组处理
- Java中的JavaScript处理方法
- 使用java处理XML
- JavaScript使用面向对象思想处理cookie
- JavaScript使用面向对象思想处理cookie
- 使用 JavaScript E4X 高效处理 XML
- JAVASCRIPT使用map的put问题处理
- 使用 WebView 处理javascript的常用对话框
- 如何使用Javascript XSLT 处理XML文件
- JavaScript使用面向对象思想处理cookie .
- 使用javascript处理url的简单封装
- JavaScript使用技巧之处理EL表达式
- 说说如何使用 JavaScript 进行错误处理
- 处理事件:C++,Java到JavaScript
- C++、Java、JavaScript中的异常处理(Exception)
- java及javascript处理金额小数点问题
- 网口扫盲三:以太网芯片MAC和PHY的关系
- 如何让你的WIFI快人一步
- 只允许选择网页内容,不允许复制网页内容的js代码
- HDU 1003 Max Sum
- 使用Xcode和Instruments调试解决iOS内存泄露
- 使用Java处理JavaScript
- Swift Tips - Array 类型
- linux .o a .so .la .lo的区别
- statfs获得硬盘使用情况 模拟linux命令 df(转)
- JavaScript之五:继承
- 设计模式(二):抽象工厂模式
- 绑定多个事件,如何决定前面事件失败后面事件不执行
- linux dynamic , static library
- 短信猫使用