public class ExecJs {
    /**     * 记录日志类     */    private Logger log = Logger.getLogger(ExecJs.class);    /**     * 后置处理,执行js脚本     * @param js     * @throws Exception     */    public void execJs(String js, Map<String,Object> map) throws Exception {        if (log.isDebugEnabled()) {            log.debug("execJs js : " + js);            Iterator<Entry<String, Object>> it = map.entrySet().iterator();            while (it.hasNext()) {                Entry<String, Object> entry = (Entry<String, Object>) it.next();                log.info("EXECJS MAP : " + entry.getKey() + "---" + entry.getValue());            }// end while        }// end if        if ("".equals(js) || js == null) {            log.info("EXECJS ERROR : JAVASCRIPT CONTENT IS NULL");        } else if(map == null || map.size()<=0){            log.info("EXECJS ERROR : MAP CONTENT IS NULL");        } else {            // 获取脚本引擎            ScriptEngineManager mgr = new ScriptEngineManager();            ScriptEngine engine = mgr.getEngineByName("javascript");            // 绑定数据            ScriptContext newContext = new SimpleScriptContext();            Bindings bind = newContext.getBindings(ScriptContext.ENGINE_SCOPE);            bind.putAll(map);            try {                engine.setBindings(bind, ScriptContext.ENGINE_SCOPE);                engine.eval(js);            } catch (Exception e) {                log.info("EXECJS EXCEPTION : EXECUTE JAVASCRIPT EXCEPTION", e);                throw (e);            }// end try        }// end if    }}调用例子
boolean flag = false;
String js = “var a = 1; var b = a + aKey;println(b);”;
Map<String,Object> map = new HashMap<String,Object>();
map.put(“aKey”, “aValue”);
try {
flag = execJs.execJs(js, map);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
				
							        
    String js = “var a = 1; var b = a + aKey;println(b);”;
Map<String,Object> map = new HashMap<String,Object>();
map.put(“aKey”, “aValue”);
try {
flag = execJs.execJs(js, map);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
