// 调用内部脚本执行 engine eval(titlescript) // 转换为Invocable Invocable invocableEngine = (Invocable) engine // 不带参数调用sayTitle方法 invocableEngine invokeFunction( sayTitle ) // 调用外部脚本执行 // 创建JS文件的File对象 并读入流 File functionscript = new File( ajava js ) Reader reader = new FileReader(functionscript) // 开始执行ajava js里的程序 engine eval(reader) // 不带参数调用sayHello方法 invocableEngine invokeFunction( sayHello ) // 带参数调用sayHello方法 invocableEngine invokeFunction( sayHello mark ) } catch (Exception e) { e printStackTrace() } } } ajava js文件 function sayHello(){ sayHello(null) } function sayHello(name){ if(name==null){ println( 欢迎你!请注册Ajava会员 ) }else{ println(name+ 独立JAVA社区欢迎你 ) } } 运行结果(控制台) 源码实例 使用javax script调用JS脚本里的方法 lishixinzhi/Article/program/Java/hx/201311/26436
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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
}
}
js指的是网页Java Script客户端脚本文件。JS和HTML都是网页的格式文件,HTML是一种使用标准确无误语言编写的网页,JS是使用高级语言,广义的网页语言也有AJAX、JS、XML、ASP、PHP等JS只是其中的一种.HTML转JS文件的软件即将普通语言做成的网页,在不改变页面内容等情况下,使用JS语言对内部进行重新组织,重新显示出同样的效果.JS对网页制作要求高于HTML语言.扩展名为js的文件,是用javascript脚本语言编写的。js文件常见的有两种用法。1.在网页里使用:一般不能直接打开,只有配合网页使用,如果是想破解某网站的在线电影等,仅从js文件入手可能性不大,建议使用专门的抓取工具,如wpe,抓取网络封包,再对封包分析,js可以使用记事本编辑。2.在单机使用,一般可以用来做为一个可执行程序直接双击就可以运行,当然前提是计算机没有安装网页设计软件。