freemarker 入门
FreemarkerUtil.java
publicclassFreemarkerUtil{
//获得template对象
publicTemplategetTemplate(Stringname){
try{
//通过Configuration对象读取相应的ftl文件
Configurationconfig=newConfiguration();
//设置flt文件目录
config.setClassForTemplateLoading(this.getClass(),"/cn/itcast/freemarker/template/ftl/");
//在ftl目录中找到具体的模板文件
Templatetemp=config.getTemplate(name);
returntemp;
}catch(Exceptione){
e.printStackTrace();
thrownewRuntimeException(e.getMessage());
}
}
//输出到控制台
publicvoidcprint(Stringname,Map<String,Object>root){
try{
//获得Tempalte对象
Templatetemp=this.getTemplate(name);
//输出到控制台
temp.process(root,newPrintWriter(System.out));
}catch(Exceptione){
e.printStackTrace();
thrownewRuntimeException(e.getMessage());
}
}
//输出到本地电脑的某个盘符上
publicvoiddprint(Stringname,Map<String,Object>root,StringoutFile){
Writerout=null;
try{
//获得Template对象
Templatetemp=this.getTemplate(name);
out=newOutputStreamWriter(newFileOutputStream("F:\\freemarker\\ftl\\"+outFile),"GBK");
temp.process(root,out);
}catch(Exceptione){
e.printStackTrace();
thrownewRuntimeException(e.getMessage());
}
}
}
ftl
<#--freemarker的基本语法-->
<#--assign定义一个变量-->
<#--number和string类型可以直接输出-->
<#assigni=5/>
i是:${i}
<#assignstr="我是一个字符串"/>
str是:${str}
<#--boolean类型的处理-->
<#assignflag=true/>
flag是:${flag?string("yes","no")}
flag是:${flag?string}
<#--日期转成字符串(time是后台传过来的)-->
当前时间:${time?string("yyyy-MM-ddHH:mm:ss")}
<#--字符串转日期-->
<#assigndd="1992-09-1117:21:15"/>
日期:${dd?date("yyyy-MM-ddHH:mm:ss")}<#--结果是:1992-9-11-->
日期:${dd?datetime("yyyy-MM-ddHH:mm:ss")}<#--结果是:1992-9-1117:21:15-->
日期:${dd?time("yyyy-MM-ddHH:mm:ss")}<#--结果是:17:21:15-->
<#--字符串的连接方式-->
${"hello"+name}
${"hello${name}"}
<#--两者的结果都是:hello狗日的字符串!-->
<#--includeimport指令-->
<#include"/inc/include.ftl"/>
<#import"/inc/import.ftl"asmm/>
${mm.tt}
<#assigntt="现在老子很不爽!"inmm/>
${mm.tt}<#--修改成功!-->
<#--自定义指令(macro指令)类似于java的方法-->
<#macromm>
<p>这是一个宏指令</p>
<h2>这是宏指令的内容!</h2>
</#macro>
<#--可以调用n次-->
<@mm/><@mm/>
<#macronnabc>
${a}----${b}----${c}
</#macro>
<@nna="张三"b="李四"c="王五"/>
<@nn"jack""罗志祥""5435435"/>
<#--nested指令-->
<#macroborder>
<tableborder="1px"cellspacing="0px">
<tr>
<td><#nested/></td>
</tr>
</table>
</#macro>
<@border>表格的列内容</@border>
<#--取整数-->
${2.444?int}<#--结果是:2-->
<#--
字符串使用的内建函数:
html:字符串中所有的特殊HTML字符都需要用实体引用来代替(比如<代替<)。
cap_first:字符串的第一个字母变为大写形式
lower_case:字符串的小写形式
upper_case:字符串的大写形式
trim:去掉字符串首尾的空格
序列使用的内建函数:
size:序列中元素的个数
数字使用的内建函数:
int:数字的整数部分(比如-1.9?int就是-1)
-->