欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

freemarker环境搭建(一)

程序员文章站 2022-07-12 23:09:34
...

一、简介

    FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。

    FreeMarker是免费的,基于Apache许可证2.0版本发布。其模板编写为FreeMarker Template Language(FTL),属于简单、专用的语言。需要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,主要用于如何展现数据, 而在模板之外注意于要展示什么数据。

 

二、环境搭建

1、通过maven搭建

pom.xml

<?xml version="1.0"?>
<project
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.xu.freemarker</groupId>
	<artifactId>freemarkerTest</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<name>freemarkerTest</name>
	<url>http://maven.apache.org</url>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<!-- freemarker核心 jar -->
		<dependency>
			<groupId>org.freemarker</groupId>
			<artifactId>freemarker</artifactId>
			<version>2.3.19</version>
		</dependency>
	
		<!-- junit测试 jar -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.10</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
</project>

2、freemarker工具类FreemarkerUtil.java

package com.xu.freemarker;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;

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

public class FreemarkerUtil {

	//getTemplate("01.ftl")
	public Template getTemplate(String name){
		//通过Freemarker的Configuration读取相应的ftl
		Configuration cfg = new Configuration();
		//设置去哪里读取相应的ftl模版文件 
		cfg.setClassForTemplateLoading(this.getClass(), "/ftl");
		Template temp = null;
		try {
			//在模版文件目录中找到名称为name的文件
			temp = cfg.getTemplate(name);
		} catch (IOException e) {
			e.printStackTrace();
		}
		return temp;
	}
	
	//通过Template可以将模版输出到相应的流中
	public void print(String name, Map<String,Object> root){
		Template temp = this.getTemplate(name);
		try {
			temp.process(root, new PrintWriter(System.out));
		} catch (TemplateException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	//通过Template可以将模版输出到相应的文件中
	public void fprint(String name, Map<String,Object> root, String outFile){
		Template temp = this.getTemplate(name);
		FileWriter fw = null;
		try {
			fw = new FileWriter(new File(outFile));
			temp.process(root, fw);
		} catch (IOException e) {
			e.printStackTrace();
		} catch (TemplateException e) {
			e.printStackTrace();
		} finally{
			if(fw != null){
				try {
					fw.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
}

  3、 测试类TestFreemarkter.java

package com.xu.freemarker;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.junit.Before;
import org.junit.Test;

import com.xu.freemarker.model.User;

public class TestFreemarkter {

	FreemarkerUtil fu;
	
	@Before
	public void before(){
		fu = new FreemarkerUtil();
	}
	
	@Test
	public void test01(){
		Map<String,Object> root = new HashMap<String,Object>();
		root.put("username", "张三");
		fu.print("01.ftl", root);
	}
}

 4、freemark文件01.ftl

您好,${username}

 5、运行测试结果

您好,张三

 

freemarker环境搭建完毕

 

源码在附件中