FreeMark

FreeMarker

1.页面静态化

  • 页面静态化其实就是将原来的动态网页(例如通过ajax请求动态获取数据库中的数据并展示的网页)改为通过静态化技术生成的静态网页,这样用户在访问网页时,服务器直接给用户响应静态html页面,没有了动态查询数据库的过程。

  • 常用的静态化模板引擎

    • Freemarker
    • Thymeleaf
    • Mustache

2.Freemarker介绍

  • 定义 : FreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文本输出

  • 场景:

    • 页面静态化生成(把一个动态加载数据的页面生成html的过程,叫静态化)
    • 合同模板生成
    • 邮件模板生成
    • 自动生成代码
  • 原理/组成:

    • Template:模板
    • Model:模板要用到的数据
    • Output:模板+数据渲染后生成的静态html

在这里插入图片描述

3.Freemarker入门案例

  1. 创建maven工程并导入Freemarker的maven坐标
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.23</version>
</dependency>
  1. 创建模板文件(Freemarker的模板文件后缀可以任意,一般建议为ftl)
<html> 
<head>
	<meta charset="utf-8"> 
	<title>Freemarker入门</title> 
</head> 
<body>
	<#--我只是一个注释,我不会有任何输出 --> 
	${name}你好,${message} 
</body> 
</html>
  1. 生成文件

    使用步骤:

    第一步:创建一个 Confifiguration 对象,直接 new 一个对象。构造方法的参数就是 freemarker的版本

    号。

    第二步:设置模板文件所在的路径。

    第三步:设置模板文件使用的字符集。一般就是 utf-8。

    第四步:加载一个模板,创建一个模板对象。

    第五步:创建一个模板使用的数据集,可以是 pojo 也可以是 map。一般是 Map。

    第六步:创建一个 Writer 对象,一般创建 FileWriter 对象,指定生成的文件名。

    第七步:调用模板对象的 process 方法输出文件。

    第八步:关闭流。

public class FreemarkerTest {
    public static void main(String[] args) throws Exception{
        //创建freemarker的配置对象
        Configuration configuration = new Configuration(Configuration.getVersion());
        //设置模板文件所在目录
        configuration.setDirectoryForTemplateLoading(new File("d:\\ftl"));
        //设置字符集
        configuration.setDefaultEncoding("utf-8");
        //加载模板文件
        Template template = configuration.getTemplate("test.ftl");
        //准备模板文件中所需要的数据,通常是通过Map进行构造
        Map map = new HashMap();
        map.put("name","zhangsan");
        map.put("message","hello freemarker!!");
        
        //准备输出流对象,用于输出静态文件
        Writer writer = new FileWriter("d:\\ftl\\test.html");
        //输出
        template.process(map,writer);
        //关闭流
        writer.close();
    }
}

4.Freemarker基本语法

基本语法

  • 1、文本,直接输出的部分
  • 2、注释,即<#–…-->格式不会输出
  • 3、插值(Interpolation):即${…}部分,将使用数据模型中的部分替代输出
  • 4、FTL指令:FreeMarker指令,和HTML标记类似,名字前加#予以区分,不会输出

FTL指令

  • assign,在模板页面中定义一个变量

    <#assign info={"mobile":"13812345678",'address':'北京市昌平区'} >
    电话:${info.mobile} 地址:${info.address}
    
  • include,引入其他页面到当前模板中

    <#include "head.ftl"/>
    
  • if else 指令,用于判断条件

    <#if success=true>
    你已通过实名认证
    <#elseif success=true>
    你已通过实名认证
    <#else>
    你未通过实名认证
    </#if>
    
  • list 指令,用于遍历集合

    • as固定语法
    <#list goodsList as goods>
    商品名称: ${goods.name} 价格:${goods.price}<br>
    </#list>
    
  • 内置函数

    • 日期
    Last updated date: ${lastUpdated?string('yyyy-MM-dd')}<br>
    Last updated date: ${lastUpdated?date}<br>
    Last updated time: ${lastUpdated?time}<br>
    Last updated time: ${lastUpdated?datetime}<br>
    

5.Freemarker使用小结

1.什么是网页静态化技术

随着用户访问量以及数据量的增大,网页静态化技术方案如今越来越流行。
什么是网页静态化技术呢?简单来说就是将网页以纯静态方式的形式展现。

2.网页静态化技术与缓存技术的比较

共同点:都可以减小数据库的访问压力。

区别:

(1)缓存技术适用于小规模的数据。以及一些经常变动的数据。

(2)网页静态化技术适用于大规模但是变化不太频繁的数据。

3.网页静态化技术的应用场景

(1)新闻门户网站的文章类型频道一般都用到了网页静态化技术。点击新闻直接会跳到静态化的页面。
(2)电商网站的商品详情页也十分常用,我们在存储商品的时候会生成静态化页面,点击商品详情,会直接跳到生成的商品详情的静态化页面。
(3)网页静态化技术可以结合Nginx这种高性能web服务器来提高并发访问量。

4.什么是FreeMarker

FreeMarker是一款用Java语言编写的模板引擎,用它可以通过模板和要改变的数据来生成输出文本(例如HTML网页,配置文件,源代码等),作为用来实现网页静态化技术的一种手段。FreeMarker的使用率大大超过其他一些技术。对于系统中频繁使用数据库进行查询但是内容更新很小的应用,都可以用FreeMarker将网页静态化,这样就避免了大量的数据库访问请求,从而提高网站的性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值