JAVA服务器端来执行javascript脚本

在java下也有不少脚本引擎,像什么什么的——都没记住,不过最后还是选择了执行javascript脚本的引擎rhino,原因很简单,javascript脚本我会用,且据说rhino执行效率还行。不知道是不是不会玩perl或者python此类脚本的就是菜鸟,如果是的话,那我就是菜到不能再菜的鸟了。 言归正传,先给出rhino的下载地址:http://www.mozilla.org/rhino/download.html 下载后,把其中的js.jar加入到你的java工程中,执行以下代码: import org.mozilla.javascript.*; public class test { /** * @param args */ public static void main( String[] args) { // TODO Auto-generated method stub Context cx = Context.enter(); try { String s = "var c = 100 + 200"; Scriptable so = cx.initStandardObjects(); cx.evaluateString( so, s, "ex-1", 1, null); } finally { cx.exit(); } } } 如果没有意外的话,什么错误也不会报,什么输出也不会有。但是语句var c=100+200实实在在的被执行了。 先对执行脚本需要的类对象做一个说明,Context,脚本的运行时环境,Scriptable则是存放变量的地方。这两个类像是计算机的cpu和内存的作用。 在执行脚本前,必须要用Context.enter()进入一个运行时环境,在执行完成后,要用cx.exit()来退出运行环境。可以认为是要使用计算机,必须得先开电源,而用完后得关电源一样。 initStandardObjects()这个方法的作用是创建一个能被当前Context访问的内存Scriptable。 java.lang.Object evaluateString(Scriptable scope, java.lang.String source, java.lang.String sourceName, int lineno, java.lang.Object securityDomain) 这个方法则是在执行一段javascript脚本,scope就是先前创建的Scriptable;source,脚本代码;sourceName,脚本名称,不知道有什么用,可以随便给;lineno,开始执行的行号,一般都是1;securityDomain,和安全有关的东西,可以忽略。 我们把程序的evaluateString语句后增加一条语句System.out.println( so.get( "c", so)),执行后会发现输出的结果正是脚本预期的结果300。 对于像内存一样的Scriptabel来说,我们最常用的两个方法就是get还有put,既然能在脚本执行后从里面取出结果,自然也就能在执行前先用put事先往里面放值。具体俺就不写了。

转载于:https://www.cnblogs.com/yohen/articles/1069890.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值