BSF

BSF框架详解
BeanScriptingFramework(BSF)是一款开源项目,旨在使Java应用程序能够调用脚本语言,并支持脚本语言直接访问Java对象和方法。本文介绍了BSF的功能、支持的语言及如何在Java环境中使用BSF。

 BSF

  一、 BSF 是什么?

  Bean Scripting Framework(BSF)是一个支持在Java应用程序内调用脚步语言 (Script),并且支持脚步语言直接访问Java对象和方法的一个开源项目。有了它 , 你就能在java application中使用javascript, Python, XSLT, Perl, tcl, ……等一大堆scripting language. 反过来也可以,就是在这些scripting language中调用任何已经注册过了的JavaBean,java object。

  它提供了完整的API实现通过Java访问脚本语言的引擎。目前BSF 支持以下几种脚本语言:

  Javascript (using Rhino ECMAScript, from the Mozilla project)

  NetRexx (an extension of the IBM REXX scripting language in Java)

  Python (using Jython)

  Tcl (using Jacl)

  XSLT Stylesheets (as a component of Apache XML project's Xalan and Xerces)

  另外,也支持以下的这几种语言通过他们自身的BSF引擎来实现(下面提到的各个脚本语言的引擎都可以在其官网下载到)。

  Java (using BeanShell, from the BeanShell project)

  Groovy

  JLog (PROLOG implemented in Java)

  JRuby

  JudoScript

  ObjectScript

  ooRexx (Open Object Rexx), using BSF4Rexx.

  BSF最初是IBM的Alpha工作组的项目后来贡献给了Apache,这个项目的目的就是为使得在脚本语言的环境下访问JavaBean的内容。相信使用过这个Apache项目的朋友应该不多。但是这是一个很好的idea。可以使得Java能够更好的于各种流行脚步语言整合,实现不同语言之间的交互作用。随着Groovy, Ruby等脚步语言的走红。这个项目可能会有更大的发挥余地。试想一下,使用Java来编写模块,使用脚步来排列组合各个模块。并且可以通过bsf来统一管理运行多种不同脚步,这样也算是不错的想法。当然具体运用它还要看实际项目的需要。

  官网地址:http://jakarta.apache.org/bsf/。

  二、如何安装?

  把bsf.jar文件当做class library来安装.另外一个非常重要的包是js.jar(假如你用javascript的话),也要装进来,否则会找不到javascriptEngine。

  三、如何使用?

  在JSP中使用BSF:

  省略

  在servlet / formBean / java application中使用BSF:

  Step 1. import BSF class

  例如: 这些包都是要用到的.

  import org.apache.soap.util.IOUtils; (这个包用于把javascript文件给变成String,才能扔进BSF引擎中处理)

  import org.apache.bsf.*; (BSF引擎就在这里)

  import org.apache.bsf.engines.javascript.*;

  import java.io.*;

  import java.util.*;

  Step 2. initiate BSFManager object

  例: bsfmgr = new BSFManager();

  Step 3.使用BSFManager.eval(….) 或 BSFManager.exec(…) 就可以执行javascript了.

  例:

  Object obj = bsfmgr.eval( “javascript”, XX, YY, ZZ, script ) : 返回script的值,以object的形式.

  bsfmgr.exec( “javascript”, XX, YY, ZZ, script): 执行这script.返回空!

  第一个参数javascript可以换成其它如perl, python, tcl……

  XX: The name of the input source (typically a filename; here, it's always simply Evaluator),没有什么用,任何string都行.

  YY: The line number, 通常为0,

  ZZ: The character position of the given script in the input source (these arguments are for error reporting), 通常为0最后一个参数是要执行的script语句, 是String就行了.

  Step 4:

  在java class 中注册一个javaBean, mgr.declareBean("PS", ps, ps.getClass()), “PS” 和 ps(一个javaBean的 instance) 绑定在一起了. 以后在 javascript文件中,直接用 PS就可以找到这个javaBean了.

  如果你用另外一种注册方法: mgr.registerBean("PS",ps) , 那么在javascript文件中,用PS = bsf.lookupBean("PS") 来在BSFManager中找到PS这个javaBean. Bsf就代表BSFManager.

  常用的method参考:

  BSFManager() - the BSFManager constructor

  • eval() - used to evaluate a script and return its value

  • exec() - used to execute a script

  • loadScriptingEngine() - used to return a BSFEngine for the desired scripting language

  • registerBean() - adds an object to BSF’s object registry

  • lookupBean() - retrieves an object from BSF’s object registry

  • declareBean() - creates an implicit object in the context of any loaded scripting language, which does not have to be accessed via lookupBean()

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值