技术开发 频道

实战每晚构建之主要技术

    1.6 velocity模版系统

    velocity模版系统比起jsp模版来说有比较大的好处:

    实现视图和控制代码的完全隔离

    在jsp中,我们可以嵌入执行代码,jsp本质是具有格式化代码和控制代码混合能力,虽然大家发明了好多方法、设计模式和非常好的实践,可是不能从根本上消除jsp编写员混合格式化代码和控制代码的恶习;而在velocity模版系统中,这种混合不可能存在,你不可能在velocity的.vm文件中通过代码Person p = new Person()生成一个Java对象,这些业务对象只能在控制中生成并放到context中。

    安全

    jsp文件被编译之后形成了一个类似于servlet的东西,几乎可以在jsp中干任何事,你可以在jsp中写 System.exit(0)来关掉java虚拟机,或利用别的什么漏洞。

    这里只说这些好处,关于其他的大家可以到网上去查或自己总结。下面我要介绍一下velocity模版系统工作机制和关于velocity的设置问题。

    velocity模版系统工作机制

    我们以在servlet环境下的模版系统为例(当然控制还可以由其他代码来实现)。控制可以实例化一些业务对象比如Person 放到context 中(执行context的相关方法),控制在接着装载相关的视图的模版比如PersonInfo.vm,产生Template实例,并让这个实例解释自己生成输出比如html格式流,Template实例在解释模版的时候会根据模版文件中的指令访问context中的业务对象。

    所以要使这个模式工作,重要的一点是控制必须和视图就context中的业务对象的名字达成一致,这就是控制和视图的协议。


    velocity的设置

    velocity运行的第一个任务就是初始化,执行Velocity.init方法。无参数的init方法会采用缺省的属性配置,在velocity.jar 中的org.apache.velocity.runtime.defaults.velocity.properties位置;使用有参数的init方法,参数传递的是一个属性文件或java.util.Properties 对象,参数中定义的属性会覆盖缺省的属性设置,没定义的属性会采用缺省的属性设置。

    比较有用的属性设置是读取模版文件时采用的字符集、产生输出流时使用的编码、模版所在的位置和模版装载器:

    input.encoding = gbk

    output.encoding = gbk

    file.resource.loader.path = templates

    2、文档书写辅助工具

    word 文档书写排版工具

    powerpoint,图片组织绘画工具

    visio 绘制数据流图,ER图等的工具

    rational rose,绘制UML图形的工具

    windows 附件中的画图来截取图片

    操作系统的全屏打印功能

    参考资料

    进一步学习面向对象的系统分析和设计:《面向对象的系统分析和设计》Ronald J. Norman

    《实用面向对象软件工程教程》殷人昆 田金兰 马晓勤 译

    良好的用例编写风格可以从这里获得:《编写有效用例》 Alistair Cockburm

    进一步理解cvs和nightlybuild技术的相关背景资料:《cvs和nightlybuild技术》 杨锦方

    cvs源代码版本系统在:http://www.cvshome.org

    statcvs 项目工作量分析工具在:http://statcvs.sf.net/

    clover测试覆盖率分析工具在: http://www.cortexebusiness.com.au/

    ant构建工具在:http://ant.apache.org

    junit单元测试工具在:http://www.junit.org

    apache web程序测试工具在:http://jakarta.apache.org/cactus/

0
相关文章