通过一些技术手段(FreeMarker/valocity)将动态的页面(jsp,asp,net,php)转换成静态的页面,通过浏览器直接访问静态页面。
通过浏览器访问静态页面,不需要经过其他程序处理,访问速度比较快。
可以使用freemarker实现网页静态化
FreeMarker是一个用java语言编写的模板引擎,它基于模板输出文本。FreeMarker与web容器无关,即在web运行时,它并不知道Servlet或http,它不仅可以用作表现出的实现技术,而且还可以用于生成XML,JSP或java等。
首先,需要导入依赖
<dependency>
<groupId>org.freemarkergroupId>
<artifactId>freemarkerartifactId>
<version>2.3.23version>
dependency>
1)创建configuration的对象
2)设置模板文件所在的目录
3)设置字符集
4)创建一个模板文件,官方提供的是.ftl,其实任意的后缀都可以
5)加载模板文件,获取模板对象
6)创建数据集
7)创建writer输出流
创建一个文件夹用来专门存放生成的文件
//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();
}
}
//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);
//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集合
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、数据是日期
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/>
处理null值的方式:<br/>
第一种:<br/>
${keynull!"如果为空,你就能见到我"}<br/>
第二种:用空字符串替代<br/>
${keynull!""}<br/>
第三种:什么都不写<br/>
${keynull!}<br/>
第四种:用标签<br/>
用于引入另一个模板生成的结果
<#include "hello.htm"/>
https://blog.csdn.net/hz_940611/article/details/80706772