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/