FreeMarker最初的设计,是被用来在MVC模式的Web开发框架中生成HTML页面的.
模板文件存放在Web服务器上,当有人来访问这个页面,FreeMarker就会介入执行,然后动态转换模板,用最新的数据内容替换模板中${...}的部分,之后将结果发送到访问者的Web浏览器中。访问者的Web浏览器就会接收到例如第一个HTML示例那样的内容(也就是没有FreeMarker指令的HTML代码),访问者也不会察觉到服务器端使用的FreeMarker。(存储在Web服务器端的模板文件是不会被修改的;替换也仅仅出现在Web服务器的响应中。)
准备的数据整体被称作为数据模型。数据模型为模板是树形结构(就像硬盘上的文件夹和文件),在视觉效果上, 数据模型可以是(这只是一个形象化显示,数据模型不是文本格式,它来自于Java对象):
如下是freemarker关系图:
l FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件
l FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境
l FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库
l FreeMarker是免费的
(1)模板 + 数据模型 = 输出。
模板可以理解为:包含FreeMarker的指令的文件就称为模板(Template),数据模型理解为Web端数据,springmvc中能通过request传输到模板中。输出则为视图层。
(2)下面是一个可能的数据模型:
(root)
|
+- user = "Big Joe"
|
+- latestProduct
|
+- url = "products/greenmouse.html"
|
+- name = "green mouse"
(3)模板
在FreeMarker模板中可以包括下面三种特定部分:
Ø ${…}:称为interpolations,FreeMarker会在输出时用实际值进行替代。
Ø FTL标记(FreeMarker模板语言标记):类似于HTML标记,为了与HTML标记区分,用#开始(有些以@开始,在后面叙述)。
Ø 注释:包含在<#--和-->(而不是<!--和-->)之间。
1.指令 有两种类型的指令:预定义指令和用户定义指令。
用户定义指令要使用@替换#,如<@mydirective>...</@mydirective>