一、FreeMarker简介
成都创新互联,为您提供成都网站建设公司、成都网站制作、网站营销推广、网站开发设计,对服务成都石雕等多个行业拥有丰富的网站建设及推广经验。成都创新互联网站建设公司成立于2013年,提供专业网站制作报价服务,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏心悦目的作品。 与客户共同发展进步,是我们永远的责任!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<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.html: 模板文件下载
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>
执行FMDemo.java中的Main方法, 这会生成:
hello.html:
View Code
三, 静态化页面在项目中的使用下载
这里就来说下静态化页面在项目中的使用情况, 现在只是给商品详情页做了静态化处理.
前面关于ActiveMQ的文章已经说过, 当一个商品上架的时候, 通过发送消息来通知babasport-cms 来将对应的页面静态化.
在这里我们只写接收消息的方法, 首先来看看babasport-cms的结构图:
CustomMessageListener.java:接收MQ中的消息
View Code
StaticPageServiceImpl.java:
View Code
使用Spring管理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>
模板页面: product.html 中的改动:
引入其他页面:下载
<!-- header start -->
<#include "commons/header.html" />
循环遍历colors:
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>
循环遍历imgUrls, 并且使用if..else 进行判断:
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>
其他的照常使用EL表达式, 然后生成 id.html的静态化页面, 查看访问后的页面
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文题目:页面静态化技术Freemarker技术的介绍及使用实例.-创新互联
转载来于:https://www.cdcxhl.com/article2/eesoc.html
成都网站建设公司_创新互联,为您提供服务器托管、云服务器、网站导航、品牌网站建设、网站排名、全网营销推广
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联