首页 > 代码库 > 使用Java处理JavaScript
使用Java处理JavaScript
直接上代码了,没什么好说的
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 */ @Test public void testGetByVariableName() throws ScriptException { String script = "var name='jaune'"; String value = http://www.mamicode.com/(String) this.processer.getByVariableName(script, "name");>使用Java处理JavaScript
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。