班哥的专栏

班哥就是班加罗尔,但班哥没去过班加罗尔。

用户操作
[即时聊天] [发私信] [加为好友]
陈先波ID:turbochen
190829次访问,排名385好友0人,关注者0
turbochen的文章
原创 74 篇
翻译 0 篇
转载 23 篇
评论 143 篇
班哥的公告


Locations of visitors to this page
最近评论
sap99:www.sap99.com/,SAP99资料多多

SAP免费资料下载
http://www.sap99.com

有很多的学习资料,推荐一下,
turbochen:那是因为你来晚了。csdn网站一天一变。
ninolilin:hen hao zheng shi wo xiang yao de
qqj007:很感兴趣,正在学J2ME,能否发一份给我,我邮箱:0775x@163.com 谢谢~^_^
wangpancom:班哥,你好,小弟最近正在学习BeahShel,由于上网不方便,不能经常上,你能给我发一份你学习时的总结吧?先谢了....QQ:413819965
文章分类
收藏
    相册
    等待图片
    深圳反日大游行
    文章插图
    五子棋游戏画面
    Framework
    Hibernate
    Struts
    开发工具
    Ant
    Eclipse
    JBoss
    Tomcat
    实用组件
    BeanShell
    JasperReport
    JDom
    JFreechart
    友情链接
    IBM DeveloperWorks
    Java.net
    JavaLobby
    JavaOne
    Java憩园
    TheServerSide.COM
    榕树下
    黎明时空
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 BeanShell快速入门---Java应用程序脚本引擎收藏

    新一篇: BeanShell桌面---Java应用程序脚本引擎 | 旧一篇: BeanShell桌面---Java应用程序脚本引擎

    快速入门

    欢迎使用BeanShell.这是一个速成课程。我们将省去一些重要的选项和细节。要学习更多的内容请看本User's Guide的其它部分。

    下载和运行BeanShell

    请到http://www.beanshell.org下载最新的JAR文件。你可以用图形桌面模式和命令行模式起动BeanShell。
    如果你只是要玩一玩BeanShell,你可以在BeanShell的jar文件上双击来起动BeanShell的桌面。但不管怎样,如果你要让BeanShell与你的类与应用程序一起工作就必须将BeanShell的jar文件加到classpath中。
    你可以将BeanShell的jar文件拖到JAVA_HOME的ext目录也可以直接加到classpath中。

    • windows用户请将bsh.jar放在JAVA_HOME/jre/lib/ext文件夹,OSX用户可以放在/Library/Java/Extensions.
      或者增加BeanShell到你的classpath目录,如:
      unix: export CLASSPATH=$CLASSPATH:bsh-xx.jar
      windows:set classpath %classpath%;bsh-xx.jar

    然后你就可以运行BeanShell在GUI或命令行模式:

    •  java bsh.Console       // run the graphical desktop
      or
           java bsh.Interpreter   // run as text-only on the command line
      or
           java bsh.Interpreter filename [ args ] // run script file

    可以在你的应用程序内部来运行,也可以作为debug及servlet的远程服务器模式,或一个Applet内部来运行BeanShell。请参考"BeanShell Modes of Operation"获得更多详情。

    BeanShell GUI

    用GUI模式启动BeanShell后,将打开一个桌面视窗。用鼠标右击在桌面的背景上,你可以打开另一个控制台视窗及其它的工具如一个简单的类游览器。
    每一个控制台视窗运行一个独立的BeanShell解释器。这个图形化的控制台支持基本的历史命令,行编辑,剪切和粘贴,甚至类和变量名的自动完成功能。从控制台你能开启一个简单的编辑视窗。在它里面,你可以编写脚本和使用‘eval’选项求表达式的值。

    Java语句和表达式

    BeanShell能理解标准的JAVA语句,表达式,和方法宣告。语句和表达式的内容可以是:变量,宣告,赋值,方法调用,循环,条件等。
    在Java程序中你必须严格的使用它们,但在BeanShell中,你可以用“宽松类型”(loosely typed)的方式来使用它们。也就是说,你可以在写脚本时偷懒,不进行变量类型的宣告(在原始数据类型和对象都可以)。如果你试着用错变量类型,BeanShell将会给出一个错误。
    这里有一些例子:

    • foo = "Foo";   
      four = (2 + 2)*2/2;
      print( foo + " = " + four );  // print() is a BeanShell command
      // Do a loop
      for (i=0; i<5; i++)
          print(i);  
      // Pop up a frame with a button in it
      button = new JButton( "My Button" );
      frame = new JFrame( "My Frame" );
      frame.getContentPane().add( button, "Center" );
      frame.pack();
      frame.setVisible(true);

    有用的BeanShell命令

    在刚才那个例子中我们用了一个内建在BeanShell中的一个方便的命令print(),来显示变量的值。print()跟ava的System.out.println()非常的相像,除非它能保证输出总是命令行。print()也可以显示一些对象的类型(如数组),但比Java的更详细。另一个相关的命令是show(),用来开启与关闭显示你输入的每一行的结果。
    这儿是一些其它的BeanShell的命令:
    source(), run() - 将一个bsh脚本读到解释器或运行在另一个解释器。
    frame() - 显示一个Frame或JFrame的GUI组件.
    load(), save() - 载入和保存一个序列化的对象到一个文件.
    cd(), cat(), dir(), pwd(), etc. - 类unix的shell命令。
    exec() - 运行一个本地的程序。
    javap() - 打印一个对象的方法和字段,类似于Java的javap命令。
    setAccessibility() - 开启无限制的存取private 和protected的组件。
    要获得更多的信息请查看BeanShell命令的详细清单。

    提示:
    BeanShell命令并不是真的"内建"其中的,而是作为脚本方法自动从classpath载入的. 你可以扩展基本命令集并加到classpath中作为自订义的脚本来使用。

    脚本方法

    你可以在bsh中宣告和使用方法,就像在java的类中一样。

    • int addTwoNumbers( int a, int b ) {
          return a + b;
      }
      sum = addTwoNumbers( 5, 7 );  // 12

    bsh的方法可以有动态的(宽松的)参数和返回类型。

    • add( a, b ) {
          return a + b;
      }
      foo = add(1, 2);            // 3
      foo = add("Oh", " baby");   // "Oh baby"

    实现Interface

    注意:如果要BeanShell能实现任意的Interface,必须有jdk1.3及以上支持。
    你可以在脚本中用标准的Java内部类的语法来实现Interface.例如:

    • ActionListener scriptedListener = new ActionListener() {
          actionPerformed( event ) { ... }
      }

    你可以不用实现Interface的所有方法,而只用实现你需要的方法。如果代码中调用了未被实现的方法,将丢出异常。如果你想重载大量的方法的行为--例如为日志生成一个"哑"适配器--你可以在脚本对象中实现一个特殊的方法:invoke(name,args)。invoke()方法用来处理任何未被定义的方法的调用:

    • ml = new MouseListener() {
          mousePressed( event ) { ... }
          // handle the rest
          invoke( name, args ) { print("Method: "+name+" invoked!");
      }

    脚本对象

    在BeanShell中,和在JavaScript与Perl中一样,脚本对象是用封闭的方法体一构成的。通过在方法未尾返回一个特殊值"this",你就可以像使用方法一样调用这个对象了。在这个方法调用时,你可以给与它任何的值。通常对象内部需要包括方法,所以BeanShell的脚本方法在一定程度上可再包含一些方法以构成脚本对象。例如:

    • foo() {
          print("foo");
          x=5;
          bar() {
              print("bar");
          }
          return this;
      }
      myfoo = foo();    // prints "foo"
      print( myfoo.x ); // prints "5"
      myfoo.bar();      // prints "bar"

    如果这些代码对你来说很陌生,别急,请用户手册可得到更透彻的解释。

    在你的脚本中,BeanShell脚本对象(也就是先前例子中的"this"参照)能自动实现任何JAVA介面类型。当JAVA代码调用相应与之通讯的脚本方法内的方法。当你试着将脚本对象作为参数传给Java方法时,BeanShell会自动将它造型(cast)为相应的类型。如要传递BeanShell外部的对象时,你可以在需要时显式的进行造型(cast).请看用户手册中的详细内容。

    从你的应用程序调用BeanShell

    通过建立一个BeanShell解释器,使用eval()或source()命令,你可以在你的应用程序中求文本表达式的值和运行脚本。如果你希望在你的脚本内部使用一个对象,可以用set()方法传递对象的变量参照给BeanShell,并通过get()方法取得结果。

    • import bsh.Interpreter;
      Interpreter i = new Interpreter();  // Construct an interpreter
      i.set("foo", 5);                    // Set variables
      i.set("date", new Date() );
      Date date = (Date)i.get("date");    // retrieve a variable
      // Eval a statement and get the result
      i.eval("bar = foo*10");            
      System.out.println( i.get("bar") );
      // Source an external script file
      i.source("somefile.bsh");

     

    发表于 @ 2002年09月22日 12:12:00|评论(loading...)|编辑

    新一篇: BeanShell桌面---Java应用程序脚本引擎 | 旧一篇: BeanShell桌面---Java应用程序脚本引擎

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 班哥