freemark的基本使用

来源:互联网 发布:淘宝防身电击器 编辑:程序博客网 时间:2024/05/16 12:51

一.搭建环境
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对之间以英文逗号”,”分隔

原创粉丝点击