一.搭建环境
1.添加依赖
<dependency>
<groupId>freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.9</version>
</dependency>
2.在web-inf下创建templates文件夹,存放ftl文件
3.创建一个servlet
public class ServletDemo1 extends javax.servlet.http.HttpServlet {
private Configuration cfg = null;
public void init(){
cfg = new Configuration();
cfg.setServletContextForTemplateLoading(this.getServletContext(),null);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
// 模板文件会根据key,读取value
Map root = new HashMap();
List<User> list = new ArrayList<User>();
User user1 = new User("hu",11,new Date());
User user2 = new User("huxiao",13,new Date());
list.add(user1);
list.add(user2);
root.put("list",list);
Template t = cfg.getTemplate("WEB-INF/templates/test.ftl");
PrintWriter out = resp.getWriter();
try
{
t.process(root, out);
} catch (TemplateException e)
{
e.printStackTrace();
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
this.doPost(req, resp);
}
}
二.基本语法
1.遍历list集合
<#list 需要遍历的集合 as 集合中单个(being)><br>
<li>${being.name} for ${being.price} Euros<br>
<#list><br>
2.日期的格式化
${being,date?string("yyyy-MM-dd HH:mm:ss zzzz")}
${being,date?string("EEE, MMM d, ''yy")}
${being,date?string("EEEE, MMMM dd, yyyy, hh:mm:ss a '('zzz')'")}
3.转义字符
\” 双引号
\’ 单引号
\反斜杠
\n 换行
\r 回车
\t Tab
4.如果文本中包含了大量的特殊符号
r"$being"输出结果:
{being}
${r”C:\being\bar”} 输出结果:C:\being\bar
5.集合
自己也可以在模板中插入一定量的数据
利用中括号
<#list ["haha","dada"] as x>
${x}
</#list>
6.Map对象
自己添加元素,Map对象使用花括号包括,Map中的key-value对之间以英文冒号”:”分隔,多组key-value对之间以英文逗号”,”分隔