Turbine实战(上) menlion(原作)

1 综述
Turbine 的简介和控制流程请参见 Turbine 简述》,本文主要描述 Turbine2.2 应用的开发步骤。
根据我们不同的需要,可以有三种方式来使用 Turbine 。我们可以任选其一或三者皆取,这取决于我们自己:
l        当成一个 Servlet Frameworks Turbine 作为其中的 Controller
l        当成一个 Framework Code Library
l        当成一个 Object-Relational Tool
不论你想如何使用 Turbine ,都只需要简单的使用 turbine.jar 文件就行了。换句话说,比如你想使用 Turbine 的连接池,只需要把 turbine.jar 添加到你的 ClassPath 里,然后在你的应用里用适当的代码告诉 Turbine ,配置文件可以在哪里获取,就可以了。
Turbine 现在已经发展成了一个庞大的、容易使人畏缩的代码库 (Codebase) 。虽然如此,但是 Turbine 拥有清晰的组织形式,使人们能轻松的辨认出各部分的代码的功用。
Turbine 的代码分为以下几个部分:
l        org.apache.turbine.modules - 这就是 Turbine 中的 Module system 。有关各个 Module 的详细介绍请参见 Turbine 简述》
l        org.apache.turbine.om - OM 的意思是 Object Model 。这部分代码就是表现 Turbine Object Model 是如何构筑的地方,这里到处充斥着 Turbine RDBMS 的处理 J
l        org.apache.turbine.services - 这部分就是 Turbine Service Framework Service Framework Turbine 中是一个非常重要的方面。这些 Service 处理着各种各样的事务,比如数据库连接池、比如日志服务等等。
l        org.apache.turbine.torque - 这就是 Turbine 的数据持久层。它能根据定义好的 XML 文件产生出针对特定数据库的 .sql ,这样的话,我们就很容易构建出一个 Object Relational 的系统。
l        org.apache.turbine.util - 顾名思义,这就是 Turbine 的工具包。这里提供了许许多多的在 Web Application 里经常会用到的工具。
2 演练
为了更方便的做好的演练,我们需要使用到 TDK
Turbine Development Kit (TDK) Turbine Tomcat 以及一大堆 jar 、文档的集合。通过它,我们能够更容易的学习和开发 Turbine Application
2.1.1 TDK的安装
TDK 详细的安装说明请参见参考资料 3 ,本文不再赘述。不过该文的叙述中,仅给出了 MySQL 数据库的连接方法,鉴于 Oracle 的使用非常广泛,在此给出 Oracle 的连接方法:

# -------------------------------------------------------------------
#
# D A T A B A S E S E T T I N G S
#
# -------------------------------------------------------------------
 
database.name = newapp
database = oracle
createDatabaseUrl = java:oracle:thin:@192.168.99.XXX:1521:SID
buildDatabaseUrl = java:oracle:thin:@192.168.99. XXX:1521: SID
databaseUrl = java:oracle:thin:@192.168.99. XXX:1521:SID
databaseDriver = oracle.jdbc.OracleDriver
databaseUser = system
databasePassword = manager
databaseHost = 192.168.99. XXX

Okay ,大家都已经安装好 TDK Turbine Data Manager 示例了吧。那么,我们现在就开始了。
访问 Turbine Data Manager TDM )的首页,我们看到了什么:
查看 webapp-name/templates/app/layouts 下的 Login.vm 文件,其内容如下:

<table width="100%">
 <tr>
    <td colspan="2">
      $navigation.setTemplate("/DefaultTop.vm")
    </td>
 </tr>
 <tr>
    <td align="left">
      $screen_placeholder
    </td>
 </tr>
 <tr>
    <td colspan="2">
      $navigation.setTemplate("/DefaultBottom.vm")
    </td>
 </tr>
</table>

试着在其最前面加上一行:“ Welcome Turbine Data Manager! ”,再次刷新 Turbine Data Manager 的首页,我们发现,它的首页变为了:
在它的最上方,多了我们刚才加入的一行文本。这究竟是怎么一回事呢?
请注意在《 Turbine 简述》中所提到的, Turbine 使用 Velocity 来作为其表述层,而 .vm VelociMacro HTML 格式的文本文件)正是 Velocity 用来控制页面显示使用的配置文件。 Velocity Service 的形式加入了 Turbine 之中,也就是 Turbine Service Framework 中的 Velocity Service Velocity + Turbine 即构成了 Template Service
Login.vm 正是用来控制 TDM Login 页面显示的 VelociMacro
再看 Login.vm 中的如下几行:

    <td colspan="2">
      $navigation.setTemplate("/DefaultTop.vm")
</td>

它定义了 Login Layout 中需要调用 DefaultTop Navigation ,并且,这个 Navigation 应该放置在一个表格之中。而 DefaultTop.vm 中定义了需要显示一个图片,这个图片就是“ Turbine Data Manager ”。
类似 Layout Navigation 的控制方式, Turbine 中的 Screen UI 也是采取同样的方法进行控制。除了使用 .vm 文件进行控制外, Turbine 还可以通过 java 类来进行页面布局、内容显示等的控制。
那么, Turbine 是如何知道要到这些地方去寻找这些文件的呢?
Turbine 的配置文件查找方式为:
1、 web.xml 中定义 TurbineResources.properties 文件的存放路径;
2、 TurbineResources.properties 文件中,定义 Template File 的存放路径 [i]
2.2.1 TDM中的Screen
现在,让我们来详细看一看 TDM 中的 Screen 吧:
请转移到“ webapps/APPNAME/templates/app/screens ”目录下。大家可能还记得 Login.vm 文件中有一个“ $screen_placeholder ”变量,其实,各个 Layout 中的这个变量就是用现在这个目录下的文件来进行替换的 [ii]
打开“ Index.vm ”文件,其中有一个名叫“ $headings ”的变量,这个变量保存了在 Index 页面中的 HEAD 信息;另外的一个叫“ $entries ”的变量则保存所有在 Index 页面中需要动态显示的内容。这些变量的取值来自与之相关的 java 类。并且,在 Index.vm 中还有一些以“ # ”打头的函数,例如“ #entryCell(...) ”,这些函数在运行时被替换为各种各样的 HTML 代码 [iii] [iv]
再到“ webapps/APPNAME/WEB-INF/src/java/PACKAGE/modules/screens ”目录中来看一下, TDM 中每个页面里的动态内容都是与这里的 java 文件紧密相关的。打开“ Index.java ”文件,就像我们所见到的, doBuildTemplate 方法建立了一个名叫“ entries ”的变量并将 getEntries 方法中取出的数据放到了其中。你可以自己修改这个 java 文件,就能够改变 TDM 取得数据的方法和数据。如果你想知道更详细的信息,请参考 Turbine Velocity Site Howto 文档。
2.2.2 TDM中的Action
TDM 中插入一条数据,可以看到,浏览器中显示的 URL 中的最后一段是:“ /action/SQL ”。而插入数据实际调用的就是对应于这个 Action 的“ webapps/APPNAME/WEB-INF/src/java/PACKAGE/modules/actions/SQL.java java 类。
在示例程序 TDM 中,我们可以看到大量这样的 URL ,通过这些 URL ,我们就能知道每个操作调用的都是哪些 Action ,可以使我们更容易地学习 Turbine


[i] 后文将讲述如何配置此项。
[ii] 嗯,严格的讲,这句话并不正确,但相对而言容易理解,姑且如此罢。
[iii] 这些代码保存在“webapps/APPNAME/templates/app/GlobalMacros.vm”文件中,通过这些代码,你就能明白这些函数究竟是用来完成什么功能的啦。
[iv] 至于这些.vm文件中出现的各种不同于HTML的标记、函数的具体意义,请参见资源4。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值