freeMarker基础入门

FreeMarker 是一款模板引擎:一种基于模板的、用来生成输出文本(任何来自于 HTML格式的文本用来自动生成源代码)的通用工具。它是为 Java 程序员提供的一个开发包或者说是类库。 它不是面向最终用户,而是为程序员提供的可以嵌入他们开发产品的一款应用程序。

 

FreeMarker 不是 Web 应用框架。它是 Web 应用框架中的一个适用的组件,但是FreeMarker 引擎本身并不知道 HTTP 协议或 Servlet。它仅仅来生成文本。即便这样,它也非常适用于非 Web 应用环境的开发。要注意的是,我们使用 FreeMarker 作为视图层组件,是为给如 Struts 这样的 Model 2 框架提供现成的解决方案。 


freeMarker基础入门

 

 

【例】入门例子

FreemarkerExample

package freemarker;

import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;

public class FreemarkerExample {

	/**
	 * @param args
	 * @throws IOException 
	 * @throws TemplateException
	 */
	public static void main(String[] args) throws IOException, TemplateException {
		 /* 在整个应用的生命周期中,这个工作你应该只做一次。 */  
        /* 创建和调整配置。 */ 
        Configuration cfg = new Configuration(); 
        cfg.setDirectoryForTemplateLoading(new File("src/freemarker")); 
        cfg.setObjectWrapper(new DefaultObjectWrapper()); 
        /* 在整个应用的生命周期中,这个工作你可以执行多次 */  
        /* 获取或创建模板*/ 
        Template temp = cfg.getTemplate("test.ftl"); 
        /* 创建数据模型 */ 
        Map<String ,Object> root = new HashMap<String ,Object>(); 
        root.put("user", "Big Joe"); 
        Map<String ,Object> latest = new HashMap<String ,Object>(); 
        root.put("latestProduct", latest); 
        latest.put("url", "products/greenmouse.html"); 
        latest.put("name", "green mouse"); 
        /* 将模板和数据模型合并 */ 
        Writer out = new OutputStreamWriter(System.out); 
        //输出到文件
        //Writer out = new OutputStreamWriter(new FileOutputStream("D:/temp/helloword.html"),"GBK"); 
     
        temp.process(root, out); 
        out.flush(); 

	}

}

 

test.ftl

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html> 
<head> 
  <title>Welcome!</title> 
</head> 
<body> 
  <h1>欢迎 ${user}!</h1> 
  <p>Our latest product: 
  <a href="${latestProduct.url}">${latestProduct.name}</a>! 
</body> 
</html>   

 

 

 

 

数据模型的创建是通过已经存在的程序计算得到的。至于模板开发者,数据模型像是树状结构(比如硬盘上的文

件夹和文件),正如本例中的数据模型,就可以如下形式来描述:

 

 

(root) 

  | 

  +- user = "Big Joe" 

  | 

  +- latestProduct 

      | 

      +- url = "products/greenmouse.html" 

      | 

      +- name = "green mouse" 

 

 

 

  比较之前你在模板中看到的${user}和${latestProduct.name}。作为一种比喻:数据模型就像计算机文件系统上的内容:根 root 和 latestProduct 对应目录(文件夹),user,url和 name 对应文件。url和 name 在 latestProduct 目录中,所以 latestProduct.name 就像是说latestProduct 目录的 name 一样。但是我所说的,这仅仅是个比喻,这里并没有真实的文件和目录。 

 

  概括地讲,模板和数据模型是 FreeMarker 所需,并用来生成输出内容的(比如之前展示的 HTML) :模板+数据模型=输出 

 

 

你可能感兴趣的:(html,数据结构,freemarker,框架,Web)