页面静态化技术 freemarker

作用

用于生成静态页面
网页静态化技术和缓存技术的共同点都是为了减轻数据库的访问压力,但是具体的应用场景不同,缓存比较适合小规模的数据,而网页静态化比较适合大规模且相对变化不太频繁的数据。另外网页静态化还有利于SEO (搜索引擎优化)
FreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与 Web 容器无关,即在 Web 运行时,它并不知道 Servlet 或 HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成 XML,JSP 或 Java 等

Freemarker入门

依赖

<dependency>
		<groupId>org.freemarker</groupId>
		<artifactId>freemarker</artifactId>
		<version>2.3.23</version>
</dependency> 

创建模板文件test.ftl,后缀是ftl

<html>
<head>
	<meta charset="utf-8">
	<title>Freemarker入门小DEMO </title>
</head>
<body>
<#--我只是一个注释,我不会有任何输出  -->
${name},你好。${message}
</body>
</html>

生成文件的步骤

第一步:创建一个 Configuration 对象,直接 new 一个对象。构造方法的参数就是 freemarker的版本号。
第二步:设置模板文件所在的路径。
第三步:设置模板文件使用的字符集。一般就是 utf-8.
第四步:加载一个模板,创建一个模板对象。
第五步:创建一个模板使用的数据集,可以是 pojo 也可以是 map。一般是 Map。
第六步:创建一个 Writer 对象,一般创建一 FileWriter 对象,指定生成的文件名。
第七步:调用模板对象的 process 方法输出文件。
第八步:关闭流

		//1.创建配置类
		Configuration configuration=new Configuration(Configuration.getVersion());
		//2.设置模板所在的目录 
		configuration.setDirectoryForTemplateLoading(new File("D:/pinyougou_work/freemarkerDemo/src/main/resources/"));
		//3.设置字符集
		configuration.setDefaultEncoding("utf-8");
		//4.加载模板
		Template template = configuration.getTemplate("test.ftl");
		//5.创建数据模型
		Map map=new HashMap();
		map.put("name", "张三 ");
		map.put("message", "欢迎来到神奇的品优购世界!");
		//6.创建Writer对象
		Writer out =new FileWriter(new File("d:\\test.html"));
		//7.输出
		template.process(map, out);
		//8.关闭Writer对象
		out.close();

FTL指令

  • assign 定义对象或变量 <#assign linkman="周先生">
  • include 引入其他模板 <#include "head.ftl">
  • if 判断
<#if success=true>
  条件成立执行
<#else>  
  不成立执行
</#if>
  • list 遍历集合 <#list goodsList as goods>要遍历的内容</#list>

内置函数

内建函数语法格式: 变量+?+函数名称

  • 获取集合大小 ?size ${goodsList?size}
  • 转换json字符串为对象 ?eval <#assign data=text?eval />
  • 日期格式转换dataModel.put(“today”, new Date());
    当前日期:${today?date} <br>
    当前时间:${today?time} <br>
    当前日期+时间:${today?datetime} <br>
    日期格式化: ${today?string("yyyy年MM月")}
  • 数字转字符串 ?c ${point?c}

空值处理

  • 判断变量是否存在<#if aaa??> aaa变量存在 <#else> aaa变量不存在 </#if>
  • 去掉空值 !'代替空值的 ’${aaa!'-'}

注意

=或者==:都是判断两个值是否相等
=和!=可以用于字符串,数值和日期来比较是否相等,但=和!=两边必须是相同类型的值,否则会产生错误,而且FreeMarker是精确比较,“x”,"x ","X"是不等的

项目中使用

在配置文件中添加

<bean id="freemarkerConfig"	class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
		<property name="templateLoaderPath" value="/WEB-INF/ftl/" />
		<property name="defaultEncoding" value="UTF-8" />
	</bean>

Configuration对象不用自己创建,容器自动加载创建,模板路径和编码也不用写,
实际代码

  try {
//        第一步:创建一个 Configuration 对象,直接 new 一个对象。构造方法的参数就是
            Configuration configuration = freeMarkerConfigurer.getConfiguration();
    //        freemarker 的版本号。
    //        第二步:设置模板文件所在的路径。
    //        第三步:设置模板文件使用的字符集。一般就是 utf-8.
    //        第四步:加载一个模板,创建一个模板对象。
            Template template = configuration.getTemplate("item.ftl");
            //            查数据
            Goods goods=itempageService.findOne(goodsId);
            //        第五步:创建一个模板使用的数据集,可以是 pojo 也可以是 map。一般是 Map。
            Map map=new HashMap();
            for (TbItem tbItem : goods.getItemList()) {
                map.put("item",tbItem);
                map.put("goods",goods);
                //        第六步:创建一个 Writer 对象,一般创建一 FileWriter 对象,指定生成的文件名。
                Writer writer=new FileWriter("G:\\freemarker\\html\\"+tbItem.getId()+".html");
                //        第七步:调用模板对象的 process 方法输出文件。
                template.process(map,writer);
                //        第八步:关闭流
                writer.close();
            }

        } catch (Exception e) {
            e.printStackTrace();
            return "FAILED";
        }
        return "SUCCESS";

在使用的类中注入freeMarkerConfigurer对象
item.ftl:模板名称,模板放在WEB-INF下了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目:使用 JavaScript 编写的杀死幽灵游戏(附源代码) 杀死鬼魂游戏是使用 Vanilla JavaScript、CSS 和 HTML 画布开发的简单项目。这款游戏很有趣。玩家必须触摸/杀死游荡的鬼魂才能得分。您必须将鼠标悬停在鬼魂上 - 尽量得分。鬼魂在眨眼间不断从一个地方移动到另一个地方。您必须在 1 分钟内尽可能多地杀死鬼魂。 游戏制作 这个游戏项目只是用 HTML 画布、CSS 和 JavaScript 编写的。说到这个游戏的特点,用户必须触摸/杀死游荡的幽灵才能得分。游戏会根据你杀死的幽灵数量来记录你的总分。你必须将鼠标悬停在幽灵上——尽量得分。你必须在 1 分钟内尽可能多地杀死幽灵。游戏还会显示最高排名分数,如果你成功击败它,该分数会在游戏结束屏幕上更新。 该游戏包含大量的 javascript 以确保游戏正常运行。 如何运行该项目? 要运行此游戏,您不需要任何类型的本地服务器,但需要浏览器。我们建议您使用现代浏览器,如 Google Chrome 和 Mozilla Firefox。要玩游戏,首先,单击 index.html 文件在浏览器中打开游戏。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值