Jelly组件的XML脚本处理法
2006-09-15 12:50
232 查看
Jelly组件的XML脚本处理法 |
作者: BUILDER.COM 2002-11-18 03:27 PM |
[被屏蔽广告] |
Jelly库
Jelly内置了相当多的库,这列在了表A里。在我们的例子里使用了三个:
核心(Core)
日志(Log)
交互(Interaction)
通过被分派给XML命名空间,库就可以使用了。在XML声明后的第一个标签<j:jelly>里,我们分派三个命名空间:j、l和i。第一个嵌套标签使用了交互标签库。这个库允许你捕捉来自用户的输入。在这里,你请求得到用户名,并提供了一个匿名用户的缺省值。用户输入的结果保存在变量name里。第二个标签使用了日志库。它输出一些文本并在其中用到了name变量。
表A
Jelly库 | ||||
jelly:core | jelly:xml | jelly:define | jelly:sql | jelly:jsl |
jelly:ant | jelly:werkz | jelly:ojb | jelly:jms | jelly:validate |
jelly:http | jelly:interaction | jelly:antlr | jelly:util | jelly:html |
jelly:junit | jelly:swing | jelly:quartz | jelly:betwixt | jelly:dynabean |
jelly:log | jelly:soap | jelly:jetty | jelly:beanshell | jelly:jeez |
jelly:email | jelly:bean |
Jelly的可扩展性
Jelly的一个显著特性是可扩展性。任何常规的JavaBean都能够被绑定到一个XML标签上。JavaBean没有必要扩展任何特别的类或者实现任何特别的接口。如果它支持一个可以调用的方法,例如run()、invoke()或者execute(),在所有适当的设置器被调用以后这个方法才会被调用。如果想要调用一个不同的方法,你可以声明它,就像Listing B所示的这样
Listing B里的类能够通过Listing C里的代码使用Jelly来访问。
Jelly和Ant
Jelly允许对所有已经存在的Ant库进行完全访问。这让使用Ant丰富的工具集来开始编写脚本变得简单起来。例如,使用来自Jelly里的交互和ant库,你能够使用可选的备份功能轻易地编写一个目录复制脚本。(见dircopy.jelly。)
这个Jelly脚本会要你指定一个源目录和目标目录,然后会问你是否想要创建一个备份。如果你回答“是”(这是缺省的选择),它会要你指定一个文件名。脚本会把源目录里的所有的文件都复制到目标目录,如果你回答了“是”,它就创建一个指定目录的tar.gz文件。
Jelly和Maven
[被屏蔽广告] |
戴着帽子工作:Jelly标签
我们深入到Jelly的内部来看看它用什么来创建一个自定义的Jelly标签库。我们的例子将是个简单的标签,能够把我们的主体文本变成小写的或者大写的。Jelly标签被集中分组成我们在表A里看到的标签库。标签库在Jelly里被标记为命名空间。
<j:jelly xmlns="jelly:core" xmlns:case="jelly:com.jelly.examples.CaseTagLibrary">
这个例子让核心标签库缺省的命名空间可用,而让我们自定义的库能够在case命名空间里被使用。CaseTagLibrary必须扩展org.apache.commons.jelly.TagLibrary类,也必须为每个可用的标签调用registerTag方法。
registerTag(“case”, CaseTag.class);
我们现在有一个可用的标签了——case。CaseTag必须扩展org.apache.commons.jelly.TagSupport。TagSupport被声明为抽象的,并需要我们实现doTag(XMLOutput output)。在所有的设置器被调用以后,这个方法会被调用。你要为case标签寻找一个属性类型。而为了我们的标签类,你要像下面这样定义一个设置器方法:
public void setType(String type) { this.type = type; }
现在让我们来看看CaseTag类的内容——doTag方法。我们要找的第一件事是用户是否提供了所需的属性,就如Listing D里的那样。
如果type被设置成lower或upper,那我们就开始吧。Case标签是设计用来接收标签内容并把文本转换为大写或者小写的。要做到这一点,你要像Listing E里那样访问文本并将其转换过来。
我们的case标签现在已经完成了。完整的源代码请查CaseTag.java(包含在下载的内容里)。你现在就可以像下面这样使用我们的标签了。
<case:case type=”upper”>Hello World!</case:case>
完整的例子见case.jelly(也在下载的内容里)。
Jelly的安装
在下载了Jelly以后,你用Maven来构建和安装它。要把它安装到机器里,就要运行maven dist:install。缺省地,它会被放在/usr/local/jelly下。要使用Jelly,就要确信你把环境变量,$JELLY_HOME,指向了Jelly安装的地方。然后,把$JELLY_HOME/bin添加到你的路径里。Jelly使用forehead来处理类的加载。要让我们的CaseTagLibrary能对jelly使用,把一个包含上述类的JAR文件加到$JELLY_HOME/custom下。
最后几步
现在该是看代码生成的时候了。在含有例子代码的目录里,运行jelly case.jelly。你应该会得到“你好世界(Hello World)”的问候!
结语
Jelly从以前许多脚本编写语言借鉴了所有重要的主旨,并把它们揉合到了一体。它具有高度的可扩展性和易用性,并带有丰富的核心组件集。
相关文章推荐
- java日志处理组件log4j--log4j.xml配置详解
- java日志处理组件log4j--log4j.xml配置详解
- React.js加载组件以及JSX脚本处理代码
- 【脚本语言系列】关于 Python XML处理,你需要知道的事
- java基于xml配置的通用excel单表数据导入组件(五、Action处理类)
- java日志处理组件log4j--log4j.xml配置详解
- java日志处理组件log4j--log4j.xml配置详解
- java日志处理组件log4j--log4j.xml配置详解
- java日志处理组件log4j--log4j.xml配置详解
- 【脚本语言系列】关于Python结构化文本文件处理xml,你需要知道的事
- Tomcat源码深析之web.xml组件的处理
- java日志处理组件log4j--log4j.xml配置详解
- java日志处理组件log4j--log4j.xml配置详解
- java日志处理组件log4j--log4j.xml配置详解
- java日志处理组件log4j--log4j.xml配置详解
- 关于JDK若干重要XML处理组件的分析
- java日志处理组件log4j--log4j.xml配置详解
- java日志处理组件log4j--log4j.xml配置详解
- java基于xml配置的通用excel单表数据导入组件(三、负责数据转换处理的类)
- java日志处理组件log4j--log4j.xml配置详解