freemark

一、页面静态化

通过一些技术手段(FreeMarker/valocity)将动态的页面(jsp,asp,net,php)转换成静态的页面,通过浏览器直接访问静态页面。

通过浏览器访问静态页面,不需要经过其他程序处理,访问速度比较快。

可以使用freemarker实现网页静态化

二、freemarker

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

freemark_第1张图片
模板+数据=静态页面

三、使用步骤

首先,需要导入依赖


<dependency>
	<groupId>org.freemarkergroupId>
	<artifactId>freemarkerartifactId>
	<version>2.3.23version>
dependency>

1)创建configuration的对象
2)设置模板文件所在的目录
3)设置字符集
4)创建一个模板文件,官方提供的是.ftl,其实任意的后缀都可以
freemark_第2张图片

5)加载模板文件,获取模板对象
6)创建数据集
7)创建writer输出流
创建一个文件夹用来专门存放生成的文件
freemark_第3张图片

//7)创建writer输出流
Writer writer=new FileWriter(new File("D:/code/freemarker/hello.htm"));

8)通过调用模板对象中的process方法输出
9)关闭流

public class Springboot01ApplicationTests {
	private static  final String directotryPath="D:/code/springboot01/src/main/resources/templates";
	@Test
	public void contextLoads() throws IOException, TemplateException {
//		1)创建configuration的对象
		Configuration configuration=new Configuration(Configuration.getVersion());
//		2)设置模板文件所在的目录
		configuration.setDirectoryForTemplateLoading(new File(directotryPath));
//		3)设置字符集
		configuration.setDefaultEncoding("utf-8");
//		4)创建一个模板文件,官方提供的是.ftl,其实任意的后缀都可以
//		5)加载模板文件,获取模板对象
		Template template = configuration.getTemplate("hello.htm");
//		6)创建数据集,可以使用map  也可以使用pojo
		Map map=new HashMap();
		map.put("hello","hello world");
//		7)创建writer输出流
		Writer writer=new FileWriter(new File("D:/code/freemarker/hello.htm"));
//		8)通过调用模板对象中的process方法输出
		template.process(map,writer);
//		9)关闭流
		writer.close();
	}
}

四、freemarker语法

1)数据是pojo

//6)创建数据集,可以使用map  也可以使用pojo
		Map map=new HashMap();
		Person person1=new Person(1l,"凌霄");
		Person person2=new Person(2l,"贺子秋");
		Person person3=new Person(3l,"林妙妙");
		map.put("person1",person1);
		map.put("person2",person2);
		map.put("person3",person3);

freemark_第4张图片

2)数据是list集合

//2、数据是list集合
		List list=new ArrayList();
		list.add(person1);
		list.add(person2);
		list.add(person3);
		model.put("list",list);
输出数据是list集合<br/>
    <#list list as person>
        ${person_index}  <!--取下标-->
        ${person.id}
        ${person.name}
    </#list><br/>

3)数据是map集合

//3、数据是map集合
		Map map=new HashMap();
		map.put("p1",new Person(1l,"孙权"));
		map.put("p2",new Person(2l,"大乔"));
		map.put("p3",new Person(3l,"吕布"));
		map.put("p4",new Person(4l,"貂蝉"));
		model.put("map",map);
 取map集合数据的第一种方式:<br/>
    <#list map?keys as key>
        ${map[key].id}
        ${map[key].name}
    </#list>
    取map集合数据的第二种方式:<br/>
    ${map.p1.id}
    ${map.p1.name}<br/>
    ${map.p2.id}
    ${map.p2.name}<br/>
    ${map.p3.id}
    ${map.p3.name}<br/>
    ${map.p4.id}
    ${map.p4.name}<br/>

4)数据是日期

//4、数据是日期
		model.put("date",new Date());
 取数据是日期:<br/>
    日期:${date?date}<br/> <!--date后面要带具体取的值,否则会报错-->
    时间:${date?time}<br/>
    日期和时间:${date?datetime}<br/>
    自定义日期格式:${date?string("yyyy/MM/dd HH:mm:ss")}<br/>

5)处理null

 处理null值的方式:<br/>
    第一种:<br/>
    ${keynull!"如果为空,你就能见到我"}<br/>
    第二种:用空字符串替代<br/>
    ${keynull!""}<br/>
    第三种:什么都不写<br/>
    ${keynull!}<br/>
    第四种:用标签<br/>

6)include标签

用于引入另一个模板生成的结果

 <#include "hello.htm"/>

在这里插入图片描述

五、springboot与freemarker整合

https://blog.csdn.net/hz_940611/article/details/80706772

你可能感兴趣的:(springBoot,freemarker)