Freemarker介绍:
Freemarker 是一款模板引擎,是一种基于模版生成静态文件的通用工具,它是为java程序员提供的一个开发包,或者说是一个类库,它不是面向最终用户的,而是为程序员提供了一款可以嵌入他们开发产品的应用程序。
Freemarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境,FreeMarker更适合作为Model2框架(如Struts)的视图组件,可以在模板中使用JSP标记库,FreeMarker是免费的。
Freemarker准备:
freemarker.2.3.16.jar 下载地址:http://download.youkuaiyun.com/detail/ch656409110/4494067
Free生成静态化页面的原理:
Freemarker生成静态页面,首先需要使用自己定义的模板页面,这个模板页面可以是最最普通的html,也可以是嵌套freemarker中的取值表达式, 标签或者自定义标签等等,然后后台读取这个模板页面,解析其中的标签完成相对应的操作,然后采用键值对的方式传递参数替换模板中的的取值表达式,做完之后根据配置的路径生成一个新的html页面,以达到静态化访问的目的。
简单freemarker例子
1、 建java工程 TestFreeMarker(普通的java项目就行)
2、 添加jar包 freemarker.2.3.16.jar
3、 在项目目录下建立模板目录 template
4、 在template目录下建立模板a.ftl 内容如下图:
5、建立自己的java文件 com.sh.Test (java文件用来提供数据) 如下图所示:
6、 运行,得到结果,如下图:
常用的控制指令:
if指令:
<#if 判断(如user==”小明”)>
<#elseiif判断>
<#else>
</#if>
switch指令:
<#switch value>
<#case refValue>...<#break>
<#case refValue>...<#break>
<#default>...
</#switch>
list 指令:
<#list sequence as item>
</#list>
和foreach语法相似,
迭代集合对象时,还包含两个特殊的循环变量:
item_index:当前变量的索引值
item_has_next:是否存在下一个对象
include指令:
<#includefilename [options]>
filename:该参数指定被包含的模板文件
options:该参数可以省略,指定包含时的选项,包含encoding和parse两个选项,其中encoding指定包含页面时所用的解码集,而parse指定被包含文件是否作为FTL文件来解析,如果省略了parse选项值,则该选项默认是true.
如何遍历map:
<#list map?keys as mykey>
key 值 为: ${mykey}
value 值获取:
<#assign mapUser=map[mykey] > //些入没有引号
<#list mapUser as contents>
${contents.id} //其它值雷同
</#list>
</#list>