Velocity的感性认识

9 views
Skip to first unread message

黄妍

unread,
Oct 24, 2007, 9:10:39 AM10/24/07
to 宏宇网络工作室
最近学习比较忙再加上11月初的认证考试,所以学习Web开发的进程变慢了。先和崔老师和各位战友们道

个歉吧,大家一起努力呀。

其实说感性认识也谈不上,只能谈谈我看懂的部分。理解不对的地方还要请崔老师指正。

首先,严格说,Velocity并不是模板语言,而是模板引擎。当然,初次接触的我们,这两个概念都是不明

白的。那么先讲另外一个名词:MVC。

不要被洋人的缩写唬住了。其实这个东西从感性上还是很好理解的。MVC是"Model-View-Controller"的缩

写,中文翻译为"模式-视图-控制器"。这样,它将一个应用分成了如名的三层。
视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和

Applet。大家可能对HTML更了解,那么就按HTML来说好了,它是让用户看的见的部分,在Web开发中就是

大家从浏览器里面看到的网页。我想这个很好想象。
模型(Model):就是业务流程/状态的处理以及业务规则的制定。这个定义给出的很难懂,但我们依旧可以

把它比喻成大家接触过的东西。大家一说就说"建模",但又说不太明白。如果你要盖房子,那它们就是

可以做出砖的各种模子。注意,使模子,而不是砖。这个模子可能是你做的,也可能是别人做的你直接拿

来用(不过,你可能就不能知道这个模子的具体做法了,因为它是黑盒,但这并不妨碍你来用)。大家想

一下咱们学过的C++,这个模型就可以理解为类(这是个很大层次很高的类)。MVC并没有提供模型的设计

方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。注意这个词,重构。就如字

面上的意思,你可以想象它有多么省事。另外数据模型也要归在这里面,这个更好具体化,你就想成数据

库就可以了。但更多的时候,数据模型是单独列出的。
控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。我觉得

下面这个比喻可能不太恰当,不过还是要举出来。数据库作为我们的重要课程大家都去上了。尚翔老师反

复在提的一个图,就是三层结构两层影射。这个控制就是夹在视图和模型中的,大家有没有觉得和内模式

--模式--外模式很像呢?只不过,在这里,模型是最重要的部分。而数据库中大家不太关心内模式,

而更关心模式。但控制的作用就是这样一个中间搭线的概念。控制层并不做任何的数据处理,它只把用户

的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。

OK,说白了,MVC就是一个,有内核,有视图,中间有一个连接他俩的东西。大家下次看到这个MVC就不用

害怕了,就是这么个概念。


下面我们进入正题。大家仔细读一下Velocity的概念,不要嫌烦,也不要看到英文就嗤之以鼻,其实你有

能力看懂下面这段话。
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言

(template language)来引用由java代码定义的对象。当Velocity应用于web开发时,界面设计人员可以

和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显

示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为

web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。 Velocity的能

力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可

以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。

大家看到了,这个Velocity引擎引擎可以把核心的Java代码封装起来,剥离出Web页面。我们专业先前接

触了ASP,这是一种要把编成代码和HTML语言混写的技术。也就是说,如果你在浏览器里面,菜单栏-->查

看-->源文件,就可以看到所有代码,甚至如果是像我们这种菜鸟写出的东西,那么客户连我们连的数据

库文件啊,查找了什么字段啊统统看的到。不安全不说,和负责美工的同学沟通起来也很麻烦。JSP就是

大同小异了,虽然它比ASP"高级"一点。而Velocity就不会。你可以去看看咱们美丽故事在浏览器里查

看源代码的结果,和我、新宇拷给大家的一堆代码里肯定找不到。因为我们用的是Velocity模板>_<。

相信大家已经做过GOOGLE的工作了,那么你可能会发现,其实就是在互相转载,关于Velocity入门,

HelloWorld的代码大概只有那么两三个。
大家可以仔细回去读崔老师发的《Velocity入门》这篇文章。里面的原理讲的很易懂。因为不是Web的代

码,我又没有去改Html的......所以在MyEclipse里试着Run了一下这段代码。具体的操作如下:
1。安装MyEclipse,打开MyEclipse,workplace默认就好。
2。新建工程。找菜单栏。New--〉Java Project-->输入工程名,可以叫做MyVelocity--〉Next---〉点开

Libraries选项卡--〉Add External Jars-->寻找Velocity的Jar包。咱们的工作室开发包里就有,在上次

我说的Tomcat下Root下Webapps下的WEB-INF下Lib下,选中Velocity-dep.jar和Velocity-tools-
vies.jar

两个包--〉Finish。
3。制作Velocity模版。在MyEclipse的最左边,是Package Exploer面板。单击右键--〉New-->File-->上

面的Folder应该是默认的工程名,如果不是,就点一下下面的工程名,我的就是MyVelocity,下面的File

name那里输入hellosite.vm。(.vm就是Velocity模版文件的默认后缀。注意,在原文中让存.html后缀,

但是在后面的Java代码中它还是调用的.vm,如果是.html它会抱错说找不到,所以这里还是存储为.vm吧

)。然后把那个程序粘过来,其实就一句话- -|
4。编写Java程序。还是在最左边的面板里,右键--〉New--〉Class--〉文件名是HelloWorld(注意大小

写不要错,这个要求和入口的Main方法的类名一致)。然后把那段Java代码粘过来。
5。运行。选中你左边面板中的HelloWorld.java文件(就是你刚写的那个),右键,Run AS,Java

Application。好了,如果一切顺利的话,在最下面的Conslole面板里,应该已经出现预期的运行结果。

关于MyEclipse的应用,大家可以去搜一下Eclipse教程视频,个人感觉目前不是太顺手。然后大家就可以

研究一下那段Java代码了,研究的差不多了就去看看论坛里面崔老师发的Velocity语法。
另外,关于Velocity的Web应用,大家可以看看这个:
http://www.ibm.com/developerworks/cn/java/j-sr1.html#download


还有,关于MVC:http://www.itisedu.com/phrase/200603071552065.html

Hwer

unread,
Oct 24, 2007, 9:38:51 AM10/24/07
to 宏宇网络工作室
很感谢小妍同学,比之前搜到的东西要通俗易懂得多,大家多看看,互相之间多交流,一起努力,尤其是男生,更得加把劲了

Samael Cui

unread,
Oct 24, 2007, 8:41:47 PM10/24/07
to craz...@googlegroups.com
很不错,我想男同学们更缺乏的就是这种钻研精神。黄妍同学是你们学习的榜样。能够刻苦钻研业务知识,能够清晰的表达出来,还如此富有共享精神。可以说,黄妍同学现在已经具有了一个优秀软件工作人员的基本素质,只要以后坚持努力,肯定能够达到自己想要的目标。其它人要努力了,不然的话,最多毕业5年,你们就只能仰视她了。

在07-10-24, Hwer <yangxi...@sina.com> 写道:
Reply all
Reply to author
Forward
0 new messages