千家信息网

页面静态化技术Freemarker技术的介绍及使用实例.

发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,一、FreeMarker简介1、动态网页和静态网页差异 在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术。静态网页,随着HTML代码的生成,页面的内容和显示效
千家信息网最后更新 2025年11月09日页面静态化技术Freemarker技术的介绍及使用实例.

一、FreeMarker简介

  1、动态网页和静态网页差异

   在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术。静态网页,随着HTML代码的生成,页面的内容和显示效 果就不会再发生变化(除非你修改页面代码)。而动态网页则不然,页面代码虽然没有发生变化,但是显示的内容却是可以随着时间、环境或者数据库操作的结果而 发生相应的变化。简而言之,动态网页是基本的HTML语法规范与java、VB、VC等高级程序设计语言、数据库编程等多种技术的融合,以实现对网站内容 和风格的高效、动态和交互式的管理。

  通过前面的介绍我们可以得出动态网页和静态网页的优缺点下载(这里我们只考虑网站性能方面的相关问题,信息安全等多方面问题不做赘述):

  1)静态网页:

  a、静态网页的内容稳定,页面加载速度快。

  b、静态网页的没有数据库支持,在网站制作和维护方面的工作量较大。

  c、静态网页的交互性差,有很大的局限性。

  2)动态网页:

  a、交互性好。

  b、动态网页的信息都需要从数据库中读取,每打开一个一面就需要去获取一次数据库,如果访问人数很多,也就会对服务器增加很大的荷载,从而影响这个网站的运行速度。

   通过上面的比较我们不难看出,要提升网站的性能,我们只要把动态网页做成静态网页就会在运行速度方面有显著的提升,但是问题出来了,如果将所有页面都做 成静态页面显然是不切实际的。有什么办法能让我们的网站即能有动态网页的交互性,又有静态网页的加载速度呢?FreeMarker便能实现这样的需求:实 现动态网页静态化。

  2、FreeMarker原理下载

  FreeMarker是一个基 于Java的开发包和类库的一种将模板和数据进行整合并输出文本的通用工具,FreeMarker实现页面静态化的原理是:将页面中所需要的样式写入到 FreeMarker模板文件中,然后将页面所需要的数据进行动态绑定并放入到Map中,然后通过FreeMarker的模板解析类process()方 法完成静态页面的生成。其工作原理如图2-1所示。

模板 + 数据模型 = 输出

二, 示例演示FreeMarker下载

先看一下Demo项目的整体结构:



上面我们已经说了, 模板 + 数据模型 = 输出, 那么我们就一个个看模板和数据模型是什么样子的, 以及最后的输出是什么样子的.
注: 这里将省略freemarker的语法, 因为很多都是类似EL表达式的, 这里只提供几种情况的讲解,下载 其中包括: list, map, list和map混合
FMDemo.java:

 1 public class FMDemo { 2  3     //Freemarker 4     public static void main(String[] args) throws Exception { 5          6         Configuration conf = new Configuration(); 7         //模板+数据模型 = 输出 8         //ftl: freemarker template 9         //第一步: 读取html模板10         String dir = "C:\\workspace\\freemarker\\ftl\\";11         conf.setDirectoryForTemplateLoading(new File(dir));12         Template template = conf.getTemplate("freemarker.html");13         14         //第二步: 加载数据模型15         Map root = new HashMap();16         root.put("world", "世界你好");17         18         //List集合19         List persons = new ArrayList();20         persons.add("范冰冰");21         persons.add("李冰冰");22         persons.add("何炅");23         root.put("persons", persons);24         25         //Map集合26         Map map = new HashMap();27         map.put("fbb", "范冰冰");28         map.put("lbb", "李冰冰");29         root.put("map", map);30         31         //list和map混合32         List maps = new ArrayList();33         Map pms1 = new HashMap();34         pms1.put("id1", "范冰冰");35         pms1.put("id2", "李冰冰");36         Map pms2 = new HashMap();37         pms2.put("id1", "曾志伟");38         pms2.put("id2", "何炅");39         maps.add(pms1);40         maps.add(pms2);41         root.put("maps", maps);42         43         Writer out = new FileWriter(new File(dir + "hello.html"));44         template.process(root, out);45         System.out.println("生成完成");46     }47 }

freemarker.html: 模板文件下载

 1  2  3  4  5 Insert title here 6  7  8 ${world} 9 
10 11 <#list persons as person>12 <#if person_index == 2>13 ${person}---红色14 <#else>15 ${person}---绿色16 17
18 19 <#list map?keys as key>20 ${map[key]}21 22 ${map.fbb}/${map.lbb}
23 24 <#list maps as map>25 <#list map?keys as key>26 ${map[key]}27 28 29 <#list maps as map>30 ${map.id1}///${map.id2}31 32 33

执行FMDemo.java中的Main方法, 这会生成:

hello.html:

View Code



三, 静态化页面在项目中的使用下载

这里就来说下静态化页面在项目中的使用情况, 现在只是给商品详情页做了静态化处理.
前面关于ActiveMQ的文章已经说过, 当一个商品上架的时候, 通过发送消息来通知babasport-cms 来将对应的页面静态化.
在这里我们只写接收消息的方法, 首先来看看babasport-cms的结构图:
CustomMessageListener.java:接收MQ中的消息

View Code


StaticPageServiceImpl.java:

View Code


使用Spring管理Freemarker配置文件:

 1      2          3              4                  5                      6                      7                      8                      9                 10             11         


模板页面: product.html 中的改动:

引入其他页面:下载


<#include "commons/header.html" />

循环遍历colors:

 1 
2 <#list colors as color> 3 10 11

循环遍历imgUrls, 并且使用if..else 进行判断:

 1 
2
    3 <#list product.imgUrls as pic> 4 <#if pic_index == 0> 5
  • ${product.name}
  • 7 <#else> 8
  • ${product.name}
  • 10 11 12
13

其他的照常使用EL表达式, 然后生成 id.html的静态化页面, 查看访问后的页面


网页 静态 页面 动态 数据 模板 网站 数据库 模型 生成 输出 内容 速度 交互性 代码 原理 文件 方面 消息 范冰冰 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 外文期刊的数据库 黄岛java软件开发 开源卫星数据库 新浪邮箱发送服务器 支付宝香港网络技术有限公司 教学软件开发项目 初中生网络安全教育第5节 腾讯课堂为什么音频服务器会断开 昆明呈贡聚隐软件开发工作室 深耕网络安全管理 数据库如何定时复制 参加网络安全知识竞赛好不好 华为云s3服务器怎么样 如何访问hp服务器管理口 数据库中date的类型 国铁华晨视频存储服务器 上传到linux服务器 现代数据库技术 课程大纲 深圳鹏城科技互联网公司 电影院服务器看电影慢 穿越火线卡在服务器页面进不去 速达服务器 手机营业厅连接服务器 前端面试数据库算法题 云服务器搭建pi节点教程 服务器复制文件到容器里 怎么把阿里云的文件导入另一一个服务器 为什么软件开发商要强制推送消息 江西理工大学网络安全等级 自媒体专业是不是软件开发
0