模板引擎可以根据模板内容生成静态化页面;
模板引擎的好处
生成静态化页面,客户访问的时候直接访问的就是生成好的景泰苑页面,就不用访问数据库,给数据库节省高并发访问压力,同事html页面不需要Tomcat结业,个体Tomcat应用服务器降低了压力,浏览器也可以直接解析html,速度快
使用场景
新闻王章的新闻,电商网站的详情页面,变化不大,访问量比较大的时候使用模板引擎
有哪些技术
freemarker:标签库可以写EL表达式不能使用jstl标签,有自己标签库。
velocity:技术比较老,标签库不容记不用写
运行原理:
从数据库中取数据
freemarker模板后缀名.ftl的文件这里面有html标签 有freemarker标签 el表达式 还有js,长沙市,图片
根据模板和生成静态化页面放到服务器硬盘中客户访问的时候直接访问这个静态化页面,由于页面上的数据大部分都已经生成好,所以不需要通访问数据库,可以给数据库节省高并发访问的压力,还有静态化页面不要Tomcat结业压力给服务器节省压力,
html页面浏览器可以直接看,消费之速度比较快,客户体验好
Demo
依赖
<dependency>
<groupId>org.freemarker
<artifactId>freemarker
<version>2.3.23
</dependency>
后端代码:
import freemarker.template.Configuration;
import freemarker.template.Template;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.util.*;
public class CreateFreemarker {
public static void main(String[] args) throws Exception{
//1. 初始化freemarker
Configuration config = new Configuration();
//2. 设置模板所在目录位置
config.setDirectoryForTemplateLoading(new File("D:\\intelijIdeaWorkSpace3\\freemarkerDemo\\src\\main\\resources\\ftl"));
//3. 创建模板对象, 传入模板名称作为参数
Template template = config.getTemplate("test.ftl");
/**
* 4. 设置传入模板中的数据, 这个类型比较通用
*/
Map<String, Object> rootMap = new HashMap<>();
rootMap.put("name", "张三");
rootMap.put("message", "北京欢迎您");
//演示list集合数据
List<String> persionList = new ArrayList<>();
persionList.add("青龙");
persionList.add("白虎");
persionList.add("朱雀");
persionList.add("玄武");
rootMap.put("persionList", persionList);
//演示map数据
Map<String, String> persionMap = new HashMap<>();
persionMap.put("001", "饕鬄");
persionMap.put("002", "穷奇");
persionMap.put("003", "梼杌");
persionMap.put("004", "貔貅");
rootMap.put("persionMap", persionMap);
rootMap.put("today", new Date());
rootMap.put("aaa", null);
//5. 设置一个输出流, 指定生成的页面位置和名称
Writer out = new FileWriter(new File("xxxx.html"));
//6. 生成静态化页面, 第一个参数: 传入模板中的数据, 第二个参数:是一个输出流, 指定静态化页面输出的位置和名称
template.process(rootMap, out);
}
}