热门课程

免费试听

上课方式

开班时间

当前位置: 首页 -   文章 -   新闻动态 -   正文

Freemarker页面静态化

知了堂姐
2024-07-09 11:12:24
0

1、什么是页面静态化

将动态页面转化成静态的html,降低与数据库的交互次数,提高页面的访问速度
就是服务器在请求来之前把已经固定好的东西先编译好了,等请求来了再动态的填数据,不要等请求来了什么都没做忙得半死
利用第三方提供的模板引擎,生成对应的html
thymeleaf
freemark
Velocity

2、为什么要使用网页静态化技术

网页静态化技术和缓存技术的共同点都是为了减轻数据库的访问压力 而网页静态化比较适合大规模且相对变化不太频繁的数据。另外网页静态化还有利于SEO。 将网页以纯静态化的形式展现,就可以使用Nginx这样的高性能的web服务器来部署 Nginx可以承载5万的并发,而Tomcat只有几百

3、Freemarker

3.1、什么是 Freemarker

freemarker是apache的一个开源的模板引擎,它基于模板来生成文本输出。
freemaker模板引擎可以通过模板和数据生成静态化页面.

3.2、优点

1. 提前根据模板和数据生成静态化页面通过io流将页面写入到硬盘上, 访问的时候直接访问.就不用访问数据库了, 可以大大提高数据库的高并发读取性能. 是数据库访问量降低.
  1. 由于页面是提前生成好的, 所以访问速度快, 客户体验好
  2. 由于html不需要tomcat解析浏览器可以直接访问, 所以给tomcat降低高并发访问压力.

3.3、使用场景

新闻网站新闻页面通过freemarker提前生成好 电商网站商品详情页面通过freemarker提前生成好 原则:页面有固定的样式, 并且一次生成多次读取, 尽量少的改动数据

3.4、运行过程

3.5、模板

模板在freemarker中是以.ftl为后缀名的文件, 在模板中可以使用html标签, css, js,图片等静态资源
模板中可以使用el表达式获取数据, 但是无法使用jstl标签来判断和循环, 所以模板引擎会有自己的一套标签库供我们使用.

3.6、数据

数据一般存储在关系型数据库或者redis或者mongodb中获取.

3.7、模板文件中四种元素

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

4、入门程序

4.1、创建Maven工程

4.2、引入pom依赖


        org.freemarker
        freemarker
        2.3.23

创建模板文件



    
    Freemarker入门小DEMO 


<#--注释内容  -->
${name},你好。${message}


生成文件

创建一个测试类

public class TestFreemarker {
    /*
    第一步:创建一个 Configuration 对象,直接 new 一个对象。构造方法的参数就是 freemarker的版本号。
    第二步:设置模板文件所在的路径。
    第三步:设置模板文件使用的字符集。一般就是 utf-8.
    第四步:加载一个模板,创建一个模板对象。
    第五步:创建一个模板使用的数据集,可以是 pojo 也可以是 map。一般是 Map。
    第六步:创建一个 Writer 对象,一般创建一 FileWriter 对象,指定生成的文件名。
    第七步:调用模板对象的 process 方法输出文件。
    第八步:关闭流
     */
    public static void main(String[] args) throws Exception {
        //1.创建配置类
        Configuration configuration=new Configuration(Configuration.getVersion());
        //2.设置模板所在的目录(绝对路径)
        configuration.setDirectoryForTemplateLoading(new File("D:\\java\\撩课-高新强\\分布式项目(代码)\\code2\\FreeMarkerPro\\src\\main\\resources\\ftl"));
        //3.设置字符集
        configuration.setDefaultEncoding("utf-8");
        //4.加载模板
        Template template = configuration.getTemplate("MyFreemark.ftl");
        //5.创建数据模型
        Map map=new HashMap();
        map.put("name", "joker");
        map.put("message", "welcome Freemarker");
        //6.创建Writer对象
        Writer out =new FileWriter(new File("d:\\test.html"));
        //7.输出
        template.process(map, out);
        //8.关闭Writer对象
        out.close();
    }
}

4.3、点击测试

生成文件在D:test.html

5、FTL指令

5.1、assign指令

此指令用于在页面上定义一个变量

<#assign myname="Myxq--">
${myname}

定义对象类型

<#assign info={"name":"myxqName",'age':'30'} >
电话:${info.name}  地址:${info.age}

5.2、list指令

遍历数组

  List goodsList=new ArrayList();
        goodsList.add("goods1");
        goodsList.add("goods2");
        goodsList.add("goods3");
        Map map=new HashMap();
        map.put("goodsList",goodsList);
        //6.创建Writer对象
        Writer out =new FileWriter(new File("d:\\test.html"));
        //7.输出
        template.process(map, out);

<#list users as user>
    ${user_index} --- ${user.name}--${user.age}

5.3、if指令

<#assign myname="myxq">
<#if myname="myxq">
    

大标题1myxq

<#else>

大标题2

5.4、include指令

用于模板文件的嵌套

 <#include "header.ftl">

总结

与缓存技术一样都是为了减轻数据库的访问压力,而网页静态化比较适合大规模且相对变化不太频繁的数据。另外网页静态化还有利于SEO。 将网页以纯静态化的形式展现,就可以使用Nginx这样的高性能的web服务器来部署,Nginx可以承载5万的并发,而Tomcat只有几百,这也是Freemark的优势。

大家都在看

26岁?27岁?转行程序员一样可以!!!

2024-07-09 浏览次数:0

注册信息安全工程师有什么用?

2024-07-09 浏览次数:0

为什么要考cisp证书

2024-07-09 浏览次数:0

专科学网络安全要不要去培训

2024-07-09 浏览次数:0

恭喜知了堂11位学员参与大运会网安重保项目

2024-07-09 浏览次数:0

原来实训可以这样玩

2024-07-09 浏览次数:0
最新资讯
Freemarker页面静态化 将动态页面转化成静态的html,降低与数据库的交互次数,提高页面的访问速度
${name},你好。${message}

生成文件

创建一个测试类

public class TestFreemarker {
    /*
    第一步:创建一个 Configuration 对象,直接 new 一个对象。构造方法的参数就是 freemarker的版本号。
    第二步:设置模板文件所在的路径。
    第三步:设置模板文件使用的字符集。一般就是 utf-8.
    第四步:加载一个模板,创建一个模板对象。
    第五步:创建一个模板使用的数据集,可以是 pojo 也可以是 map。一般是 Map。
    第六步:创建一个 Writer 对象,一般创建一 FileWriter 对象,指定生成的文件名。
    第七步:调用模板对象的 process 方法输出文件。
    第八步:关闭流
     */
    public static void main(String[] args) throws Exception {
        //1.创建配置类
        Configuration configuration=new Configuration(Configuration.getVersion());
        //2.设置模板所在的目录(绝对路径)
        configuration.setDirectoryForTemplateLoading(new File("D:\\java\\撩课-高新强\\分布式项目(代码)\\code2\\FreeMarkerPro\\src\\main\\resources\\ftl"));
        //3.设置字符集
        configuration.setDefaultEncoding("utf-8");
        //4.加载模板
        Template template = configuration.getTemplate("MyFreemark.ftl");
        //5.创建数据模型
        Map map=new HashMap();
        map.put("name", "joker");
        map.put("message", "welcome Freemarker");
        //6.创建Writer对象
        Writer out =new FileWriter(new File("d:\\test.html"));
        //7.输出
        template.process(map, out);
        //8.关闭Writer对象
        out.close();
    }
}

4.3、点击测试

生成文件在D:test.html

5、FTL指令

5.1、assign指令

此指令用于在页面上定义一个变量

<#assign myname="Myxq--">
${myname}

定义对象类型

<#assign info={"name":"myxqName",'age':'30'} >
电话:${info.name}  地址:${info.age}

5.2、list指令

遍历数组

  List goodsList=new ArrayList();
        goodsList.add("goods1");
        goodsList.add("goods2");
        goodsList.add("goods3");
        Map map=new HashMap();
        map.put("goodsList",goodsList);
        //6.创建Writer对象
        Writer out =new FileWriter(new File("d:\\test.html"));
        //7.输出
        template.process(map, out);

<#list users as user>
    ${user_index} --- ${user.name}--${user.age}

5.3、if指令

<#assign myname="myxq">
<#if myname="myxq">
    

大标题1myxq

<#else>

大标题2

5.4、include指令

用于模板文件的嵌套

 <#include "header.ftl">

总结

与缓存技术一样都是为了减轻数据库的访问压力,而网页静态化比较适合大规模且相对变化不太频繁的数据。另外网页静态化还有利于SEO。 将网页以纯静态化的形式展现,就可以使用Nginx这样的高性能的web服务器来部署,Nginx可以承载5万的并发,而Tomcat只有几百,这也是Freemark的优势。

freemarker

上一篇:CentOs7 Redis6.0.6安装

下一篇:知了堂网络安全教育解决方案参加第二届四川教

相关内容

Freemarker页面静...
将动态页面转化成静态的html,降低与数据库的交互次数,提高页面的...
2024-07-09 11:12:24

热门资讯

就业课程介绍(Java+前端+... Java+大数据,前端全栈,信息安全
关于我们 请输入文章描述
0基础转行信安,他如何做到月薪... 转行并非简单的换份工作,而是我们在职场进行自我认同、重塑身份的一个过程。今天知了小姐姐为大家介绍一位...
【前端每日一题】什么是BFC?... 秋招马上就要开始了,小伙伴们最近在准备面试的东西没呢,知了姐今天将蛋糕哥整理的前端面试题共享出来,同...
cisp考试费用多少?cisp...   随着网络技术的快速发展,网络安全问题变得越来越重要。那么,CISP考试费用多少?CISP报名条件...
pythone 文件和数据格式... 关于 Python 对文件的处理,以下选项中描述错误的是
img标签的onerror事件... 1.img 标签除了 onerror 属性外,还有其他获取管理员路径的办法吗? src 指定一个远程...
网络安全运维岗面试题及答案详解... 在当今数字化时代,网络安全运维工程师的角色变得愈发重要。为了保障网络安全,各个企业都需要拥有一支经验...
知了堂官网V3第一版内测邀请 经过几个月的加班加点,我们终于迎来了知了堂官网3.1.0版本 现正招募内测中
川农第一次线下拓展精彩瞬间 5月15日,知了堂的哥哥姐姐们携手企业拓展教练浩浩荡荡奔赴川农。
-->