freemarker入門

freemarker是一款java模板引擎,本質上是一個java類庫,能夠按照用戶定義好的ftl模板文件來生成符合模板格式的動態頁面,屬於web應用的view表示層技術。html

本文有兩個小程序例子,展現了freemarker的兩種不一樣用法:java

一、使用ftl模板直接返回輸出,相似於jspweb

二、由ftl生成靜態的html頁面,這種技術適用於各類網站的後臺內容管理系統。小程序

首先看一下工程結構:jsp

/**
 * Servlet implementation class HelloFreemarkerServlet
 */
@WebServlet("/HelloFreemarkerServlet")
public class HelloFreemarkerServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    
    private Configuration config = null;
    
    private final String TEMPLATE_URL = "/WEB-INF/templates";
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloFreemarkerServlet() {
        super();
    }
    
    @SuppressWarnings("deprecation")
    public void init(){
        config = new Configuration();
        config.setServletContextForTemplateLoading(getServletContext(), TEMPLATE_URL);
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HashMap rootMap = new HashMap();
        rootMap.put("message", "Hello world");
        rootMap.put("name", "liny");
        Template template = config.getTemplate("test.ftl");
        response.setContentType("text/html; charset=" + template.getEncoding());
        Writer out = response.getWriter();
        try {
            template.process(rootMap, out);
        } catch (TemplateException e) {
            e.printStackTrace();
        }
    }

}
public class FreemarkerTest {
    public static void main(String[] args) throws IOException, TemplateException{
        final String pagePath = "F:\\workspace\\freemarker\\WebContent\\";
        final String templatePath = "F:\\workspace\\freemarker\\WebContent\\WEB-INF\\templates";
        HashMap map = new HashMap();
        map.put("message", "你好");
        map.put("name", "大臭");
        Configuration config = new Configuration();
        config.setDirectoryForTemplateLoading(new File(templatePath));
        
        FileOutputStream fos = new FileOutputStream(pagePath+"test.html");
        OutputStreamWriter writer = new OutputStreamWriter(fos);
        
        Template template = config.getTemplate("test.ftl");
        template.process(map, writer);
        
        writer.flush();
        writer.close();
    }
}
<html>
<head>
    <title>freemarker測試</title>
</head>
<body>
    <h1>${message} , ${name}</h1>
</body>
</html>
相關文章
相關標籤/搜索