BSF脚本引擎
BSF即为Bean Scripting Framework的缩写
官方网址:http://jakarta.apache.org/bsf/
它是一个支持在Java应用程序内调用脚本语言 (Script),并且支持脚本语言直接访问Java对象和方法的一个开源项目
BSF最初是IBM的Alpha工作组的项目后来贡献给了Apache
下载地址:http://jakarta.apache.org/site/downloads/downloads_bsf.cgi
可以使用它在java application中使用javascript, Python, XSLT, Perl, tcl, ……等脚本语言. 反过来也可以,就是在这些脚本语言中调用任何已经注册过了的JavaBean,java object。
这是一个很好的idea。可以使得Java能够更好的于各种流行脚步语言整合,实现不同语言之间的交互作用
样例代码(使用javascript作为测试的脚本语言):
需要jar包:
bsf.jar
js.jar
import org.apache.bsf.BSFEngine;
import org.apache.bsf.BSFException;
import org.apache.bsf.BSFManager;
/**
* BSF(Bean Scripting Framework)测试
*
* @author archie
*
* since 上午09:45:02
*/
public class BSFTest {
public static void main(String[] args) {
//Script脚本
String script=
"function dealBean()" +
"{"
+ " str = bsf.lookupBean('u');"
+ "return \"ID:\"+str.id+\"用户名:\"+str.uname+\"地址:\"+str.address+\"_调用方法:\"+str.toString()+"+
"'\t'+\"的bean内容被获得了;\";" +
"}";
try {
//BSF管理器
BSFManager bsfManager=new BSFManager();
//BSF引擎
BSFEngine bsfEngine = bsfManager.loadScriptingEngine("javascript");
/**
* Bean
*/
User u=new User();
u.setId(1);
u.setUname("archie");
u.setAddress("上海松江");
//执行Script脚本
bsfEngine.eval("javascript", 0, 0, script);
//BSFManager注册一个Bean
bsfManager.registerBean("u", u);
//bsfManager.registerBean("u", "archie");
//执行脚本中方法并返回
Object result = bsfEngine.eval("javascript", 0, 0, "dealBean();");
System.out.println(result.toString());
} catch (BSFException e) {
e.printStackTrace();
}
}
}
import org.apache.bsf.BSFException;
import org.apache.bsf.BSFManager;
/**
* BSF(Bean Scripting Framework)测试
*
* @author archie
*
* since 上午09:45:02
*/
public class BSFTest {
public static void main(String[] args) {
//Script脚本
String script=
"function dealBean()" +
"{"
+ " str = bsf.lookupBean('u');"
+ "return \"ID:\"+str.id+\"用户名:\"+str.uname+\"地址:\"+str.address+\"_调用方法:\"+str.toString()+"+
"'\t'+\"的bean内容被获得了;\";" +
"}";
try {
//BSF管理器
BSFManager bsfManager=new BSFManager();
//BSF引擎
BSFEngine bsfEngine = bsfManager.loadScriptingEngine("javascript");
/**
* Bean
*/
User u=new User();
u.setId(1);
u.setUname("archie");
u.setAddress("上海松江");
//执行Script脚本
bsfEngine.eval("javascript", 0, 0, script);
//BSFManager注册一个Bean
bsfManager.registerBean("u", u);
//bsfManager.registerBean("u", "archie");
//执行脚本中方法并返回
Object result = bsfEngine.eval("javascript", 0, 0, "dealBean();");
System.out.println(result.toString());
} catch (BSFException e) {
e.printStackTrace();
}
}
}
运行效果:
by archie
posted on 2011-07-12 16:33 archie2010 阅读(2382) 评论(0) 编辑 收藏 举报