Freemarker的简单使用

FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。

主要用Freemarker做静态页面或是页面展示

 使用(依赖):

<dependency>
  <groupId>org.freemarker</groupId>
  <artifactId>freemarker</artifactId>
  <version>2.3.23</version>
</dependency>

pojo;

public class Student {

	private int id;
	private String name;
	private int age;
	private String address;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public Student(int id, String name, int age, String address) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
		this.address = address;
	}
	public Student(){}
}

student.flt模板1:

<html>
<head>
	<title>student</title>
</head>
<body>
	学生信息:<br>
	学号:${student.id}&nbsp;&nbsp;&nbsp;&nbsp;
	姓名:${student.name}&nbsp;&nbsp;&nbsp;&nbsp;
	年龄:${student.age}&nbsp;&nbsp;&nbsp;&nbsp;
	家庭住址:${student.address}<br>
	学生列表:
	<table border="1">
		<tr>
			<th>序号</th>
			<th>学号</th>
			<th>姓名</th>
			<th>年龄</th>
			<th>家庭住址</th>
		</tr>
		<#list studentList as stu>
		<#if stu_index % 2 == 0>
		<tr bgcolor="red">
		<#else>
		<tr bgcolor="green">
		</#if>
			<td>${stu_index}</td>
			<td>${stu.id}</td>
			<td>${stu.name}</td>
			<td>${stu.age}</td>
			<td>${stu.address}</td>
		</tr>
		</#list>
	</table>
	<br>
	<!-- 可以使用?date,?time,?datetime,?string(parten)-->
	当前日期1:${date?time}<br>
	当前日期2(如果是4月,不会显示04):${date?datetime}<br>
	当前日期3(自己的格式):${date?string("yyyy/MM/dd HH:mm:ss")}<br>
	val1值:${val1!"val1的值为null"}<br>
	val2值:${val2!"val2的值为null"}<br>
	val3值:${val3!"val3的值为null"}<br>
	(判断val1的值是否为null:)<br>
	<#if val1??>
	val1中有内容
	<#else>
	val1的值为null
	</#if><br>
		(判断val2的值是否为null:)<br>
	<#if val2??>
	val2中有内容
	<#else>
	val2的值为null
	</#if><br>
	引用模板:<br>
	<#include "hello.ftl">
</body>
</html>

hello.flt模板2:

${hello}

测试方法:

@Test
	public void testFreeMarker() throws Exception {
		//创建一个模板文件
		//创建一个Configuration对象
		Configuration configuration = new Configuration(Configuration.getVersion());
		//设置模板文件保存的目录
		configuration.setDirectoryForTemplateLoading(new File("E:/代码/jackson/freemarkertest/src/main/webapp/WEB-INF/ftl"));
		//模板文件的编码格式,一般就是utf-8
		configuration.setDefaultEncoding("utf-8");
		//加载一个模板文件,创建一个模板对象。
		Template template = configuration.getTemplate("student.ftl");
		//创建一个数据集。使用map
		Map data = new HashMap<>();
		data.put("hello", "FreemarkerTestHello");
		//创建一个student对象,测试pojo取值
		Student student = new Student(1, "jackson", 20, "天津市");
		data.put("student", student);
		//添加一个list,测试List取值
		List<Student> studentList = new ArrayList<>();
		studentList.add(new Student(1, "jackson1", 1, "天津市"));
		studentList.add(new Student(2, "jackson2", 2, "天津市"));
		studentList.add(new Student(3, "jackson3", 3, "天津市"));
		studentList.add(new Student(4, "jackson4", 4, "天津市"));
		studentList.add(new Student(5, "jackson5", 5, "天津市"));
		studentList.add(new Student(6, "jackson6", 6, "天津市"));
		studentList.add(new Student(7, "jackson7", 7, "天津市"));
		studentList.add(new Student(8, "jackson8", 8, "天津市"));
		studentList.add(new Student(9, "jackson9", 9, "天津市"));
		data.put("studentList", studentList);
		//添加日期类型,取时间
		data.put("date", new Date());
		//null值的测试
		data.put("val1", null);
		data.put("val2", "222");
		data.put("val3", "333");
		//创建一个Writer对象,指定输出文件的路径及文件名。
		Writer out = new FileWriter(new File("D:/freemarker/student.html"));
		//生成静态页面
		template.process(data, out);
		//关闭流
		out.close();
	}

效果:

Freemarker的简单使用

上一篇:使用分页显示列表


下一篇:经典笔试题:有一个学生集合要求按照学生的身高从低到高排序(list中的对象实现Comparable接口来实现)