广告
返回顶部
首页 > 资讯 > 数据库 >页面静态化技术Freemarker技术的介绍及使用实例.
  • 191
分享到

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

2024-04-02 19:04:59 191人浏览 八月长安
摘要

一、FreeMarker简介  1、动态网页和静态网页差异   在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术。静态网页,随着html代码的生成,页面的内容和显示效

一、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技术的介绍及使用实例.

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

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

 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<String> persons = new ArrayList<String>();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<Map> maps = new ArrayList<Map>();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技术的介绍及使用实例.

freemarker.html: 模板文件下载

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

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

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

执行FMDemo.java中的Main方法, 这会生成:
页面静态化技术Freemarker技术的介绍及使用实例.
hello.html:

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



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

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

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


StaticPageServiceImpl.java:

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


使用spring管理Freemarker配置文件:

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

 1 <!-- 配置freemarker 实现类 -->     2         <bean class="cn.itcast.core.service.StaticPageServiceImpl"> 3             <property name="freeMarkerConfig"> 4                 <bean class="org.springframework.WEB.servlet.view.freemarker.FreeMarkerConfigurer"> 5                     <!-- 设置模板所在目录或文件夹的位置, 相对路径  --> 6                     <property name="templateLoaderPath" value="/WEB-INF/ftl/" /> 7                     <!-- 设置默认编码集 --> 8                     <property name="defaultEncoding" value="UTF-8"></property> 9                 </bean>10             </property>11         </bean>

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


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

引入其他页面:下载

<!-- header start -->
<#include "commons/header.html" />

循环遍历colors:

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

 1 <div class="dd" id="colors"> 2     <#list colors as color> 3     <div class="item" onclick="colorToRed(this,'${color.id}')"> 4         <b></b> 5         <a href="javascript:;" title="${color.name }" > 6         <img data-img="1" 7             src="/p_w_picpaths/53f44cc2N0b714cb2_002.jpg" 8             alt="灰色三件套" height="25" width="25"><i>${color.name }</i></a> 9     </div>10     </#list>11 </div>

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

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

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

 1 <div class="spec-items"> 2     <ul class="lh"> 3         <#list product.imgUrls as pic> 4                 <#if pic_index == 0> 5                     <li><img data-img="1" class="img-hover" 6                         alt="${product.name}" src="${pic}" width="50" height="50"></li> 7                 <#else> 8                     <li><img data-img="1" alt="${product.name}" src="${pic}" 9                         width="50" height="50" ></li>10                 </#if>11         </#list>12     </ul>13 </div>

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

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


您可能感兴趣的文档:

--结束END--

本文标题: 页面静态化技术Freemarker技术的介绍及使用实例.

本文链接: https://www.lsjlt.com/news/42164.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 页面静态化技术Freemarker技术的介绍及使用实例.
    一、FreeMarker简介  1、动态网页和静态网页差异   在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术。静态网页,随着HTML代码的生成,页面的内容和显示效...
    99+
    2022-10-18
  • Java使用Freemarker页面静态化生成的实现
    目录前言:1、 Freemarker介绍2、创建模板文件3、生成文件4、 Freemarker指令4.1、assign指令4.2、include指令4.3、if指令4.4、list指...
    99+
    2022-11-13
  • PHP中如何使用Memcache缓存技术优化模板的页面输出
    随着互联网的发展,对于网站页面的访问量越来越大,如何提高网站的性能成为了开发者需要面对的问题之一。其中,页面的加载速度是用户体验的重要组成部分。因此,对于网站的优化,缓存技术是不可或缺的。其中,Memcache缓存技术成为了一种非常流行的缓...
    99+
    2023-05-15
    PHP Memcache 缓存优化
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作