Beanshell简单例子

Beanshell是轻量级的java 脚本语言。
官方主页http://www.beanshell.org, 通过简介我们可以看到使用beanshell可以给我们基于java的程序增加动态编程功能。 下面就给出几个示例。

1, 通过BSFManager

如下例子我们可以看到首先给脚本增加2两个变量,第一个是类型为Integer的var1, 第二个是当前时间,类型为Date。 然后String var1 = var1 + “_” + date.toString(); 返回var1的值。

import java.util.Date;

import org.apache.bsf.BSFException;
import org.apache.bsf.BSFManager;

public class BeanShellManagerDemo {

    public static void main(String[] args) {
        BSFManager mgr = new BSFManager();
        try {
            // Set variables
            mgr.declareBean("var1", 5, Integer.class);
            mgr.declareBean("date",  new Date(), Date.class);

            String script = "import java.util.Date;"
                    +" String var1 = var1 + \"_\" + date.toString();"
                    +" return var1";
            Object result = mgr.eval("beanshell", "no", 0, 0, script);
            System.out.println("source result:" + result);
        }
        catch (BSFException ex) {
            ex.printStackTrace();
        }
    }
}

运行结果为source result:5_Mon Aug 08 22:45:18 CST 2016。 注意具体时间会变化的。

第二种,使用Interpreter。

与第一种情况类似,我们首先设置了两个变量var1和date,然后获取date,已经对var1进行运算。 后面我们加载了demo.bsh文件,这是个文本文件。内容为return var1 + “_abc”;

import java.io.IOException;
import java.util.Date;

import bsh.EvalError;
import bsh.Interpreter;

public class beanshell {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Interpreter i = new Interpreter();  // Construct an interpreter
        try {
            // Set variables
            i.set("var1", 5);
            i.set("date", new Date() ); 

            Date date = (Date)i.get("date");
            System.out.println("CurrentDate:" + date );
            // Eval a statement and get the result
            i.eval("bar = var1*10");

            // retrieve a variable
            System.out.println( i.get("bar") );

            // Source an external script file
            try {
                Object obj = i.source("demo.bsh");
                System.out.println( "source result:" + obj);
            }
            catch ( IOException e) {
                e.printStackTrace();
            }
        }
        catch (EvalError e) {
            e.printStackTrace();
        }
    }
}

最终运行结果为:
CurrentDate:Mon Aug 08 22:49:28 CST 2016
50
source result:5_abc

注意:通过测试发现,使用BSFManager,脚本的容错性更高,比如当使用BSFManager,script内容为“qqqqqqxxxx”也不或发生异常,但是如果使用Interpreter和load就直接报错了。
我使用的是bsh-2.0b4.jar

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值