FreeMarker
Freemarker是免费开源的模板引擎技术;
Freemarker脚本为Freemarker Template Language;
Freemarker提供了大量内建函数来简化开发;
JSP与Freemarker
JSP
Freemarker
官方标准
是
否
执行方式
编译型
解释型
执行效率
高
低
开发效率
低
高
扩展能力
弱
强
数据提取
JSTL+EL
内置标签
FreeMarker基本用法
FreemarkerSample1.java
package freemarker;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Map;
import freemarker.core.ParseException;
import freemarker.template.Configuration;
import freemarker.template.MalformedTemplateNameException;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.TemplateNotFoundException;
public class FreemarkerSample1 {
public static void main(String[] args) throws TemplateNotFoundException, MalformedTemplateNameException,
ParseException, IOException, TemplateException {
// 1.加载模板
// 创建核心配置对象
Configuration config = new Configuration(Configuration.VERSION_2_3_28);
// 设置加载的目录
config.setClassForTemplateLoading(FreemarkerSample1.class, ""); // ""代表当前包
// 得到模板对象
Template t = config.getTemplate("sample1.ftl");
// 2.创建数据
Map data = new HashMap<>();
data.put("site", "百度");
data.put("url", "http://www.baidu.com");
// 3.产生输出
t.process(data, new OutputStreamWriter(System.out));
}
}
sample1.ftl
${site}-${url}
控制台输出
百度-http://www.baidu.com
FTL取值
${属性名} 取值,可对属性进行计算
${属性名!默认值} 如果属性不存在的话使用默认值
${属性名?string("")} 格式化输出
分支判断
我是1
我是2
#if>
我不是null
#if>
我是1
我是2
其他
#switch>
list迭代
${stu_index}-${stu.name}#list>
${key}:${map[key]}
#list>
常用内建函数
函数名
说明
示例
lower_case/upper_case
大小写转换
"abcdefg"?upper_case
cap_first
首字母大写
"jackson"?cap_first
index_of
查找字符索引
"abcdef"?index_of("b")
length
返回字符串长度
"abcdef"?length
round/floor/ceiling
四舍五入/下取整/上取整
pi?floor
size
得到集合元素总数
students?size
first/last
获取第一个/最后一个元素
students?first
sort_by
按某个属性对集合排序
list?sort_by("time")
${(words?index_of("blood") != -1)?string("包含敏感词汇", "不包含敏感词汇")}
${words?replace("blood", "*****")}
${c.sn}-${c.price}
#list>
Freemarker与Servlet整合
配置FreemarkerServlet
web.xml
fm
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
freemarker
freemarker.ext.servlet.FreemarkerServlet
TemplatePath
/WEB-INF/ftl
freemarker
*.ftl