粗浅了解了一下Velocity模板引擎的原理

今天阅读了一篇文章,关于Velocity模板引擎原理的,很有收获,所以简单的概括一下。

其实,一直在思考Velocity这种模板引擎和JSP的区别,今天才恍然大悟。
其实Velocity可以称得上是半个语言了,所有的Velocity模板都会被分解成语法抽象树(AST)。如果对语法抽象树没有概念的话,可以了解一下《自制编程语言》一书(其实我也没有看过这本书)。
但是如何将Java的Context和Velocity最后分解出的语法抽象树匹配起来,这个才是问题所在。

这边可以对照一下JSP,JSP作为纯正的Java,自然不用担心变量的匹配的问题,所有通过Request的Attributes转发到JSP的对象都可以恢复原来格式的对象来调用。
但是Velocity中分解出的语法抽象树却需要通过反射等功能来获取Java变量的值,替换语法抽象树中的节点。

标签: none

添加新评论