题外话:
       页面静态化(展示数据从JSP页面变成HTML页面)实现方式-->模板技术   从本质上来讲,模板技术是一个占位符动态替换技术。一个完整的模板技术需要四个元素:①模板语言(使用的语法)   ②包含模板语言的模板文件(.ftl结尾)   ③模板引擎(jar包)  ④拥有动态数据的数据对象
       FreeMarker是一款模板引擎:即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。


静态页面在什么时候生成??
    数据新增,修改的时候会生成一个新的静态化页面, 在数据删除的时候会将原有的静态化页面删除

如何使用freemarker模板生成一个html页面呢???
    注意:导入freemarker的jar包

点击下载FreeMarker文档+jar包资源   密码:2ndt

  1. /**
  2. * 1.创建配置实例
  3. * 2.获得模板
  4. * 3.创建数据模型[数据模型可以是List、Map对象 注意:Map类型的key必须是String类型]
  5. * 4.将模板和数据模型合并
  6. * @author 郑清
  7. */
  8. public class FreeMarkerTest {
  9.  
  10. @Test
  11. public void testCreateHtml() throws Exception{
  12. //①创建配置对象
  13. Configuration cfg = new Configuration(Configuration.VERSION_2_3_28);//注意:这里需要传递一个版本
  14. File f = new File("E:/eclipse-workspace/JavaWeb_workspace/JavaWeb/src/main/webapp/test");
  15. //②读取模板文件夹
  16. cfg.setDirectoryForTemplateLoading(f);//设置要加载的模板文件的路径
  17. //③设置模板的编码格式
  18. cfg.setDefaultEncoding("UTF-8");
  19.  
  20. //④获取模板对象
  21. Template template = cfg.getTemplate("hello.ftl");//hello.ftl是模板名称
  22.  
  23. //⑤创建数据模型(这里使用map类型) --[数据模型可以是List、Map对象 注意:Map类型的key必须是String类型]
  24. HashMap<String, Object> map = new HashMap<>();
  25. map.put("username", "郑清");
  26. HashMap<String, Object> map2 = new HashMap<>();//map2存储的是a标签的href和显示名字
  27. map2.put("href","https://www.baidu.com");
  28. map2.put("name","百度");
  29. map.put("a", map2);
  30.  
  31. //⑥将模板和数据模型合并 --> 输出模板,生成文件
  32. PrintWriter pw = new PrintWriter(new File(f, "hello.html"));
  33. template.process(map, pw);//合并 map:数据模型 pw:输出流对象
  34. pw.close();//关闭流
  35. }
  36.  
  37. }

${key  }     -->   获取数据模型中的对应值

当数据模型为对象时:

浏览器运行效果:


FreeMarker中的基本语法:     (更多语法在FreeMarker文档中查看!!)
①判断:

  1. <#if 条件></#if>
  2. </#esleif 条件>

②遍历:

  1. <#list 数据 as 变量>
  2. ${变量 }
  3. </#list>

③遍历map:  map?keys --> 获取map中的key

  1. <#list map?keys as 变量>
  2. 输出key:${变量}
  3. 输出map的值:${map[变量]}
  4. </#list>

JavaWeb页面静态化之使用freemarker模板生成一个html静态页面的更多相关文章

  1. Asp.net动态页面静态化之初始NVelocity模板引擎

    Asp.net动态页面静态化之初始NVelocity模板引擎 静态页面是网页的代码都在页面中,不须要运行asp,php,jsp,.net等程序生成client网页代码的网页,静态页面网址中一般不含&q ...

  2. java通过FreeMarker模板生成Excel文件之.ftl模板制作

    关于怎么通过freemarker模板生成excel的文章很多,关键点在于怎么制作模板文件.ftl 网上的办法是: (1)把Excel模板的格式调好,另存为xml文件 (2)新建一个.ftl文件,把xm ...

  3. Java根据Freemarker模板生成Word文件

    1.  准备模板 模板 + 数据 = 模型 1.将准备好的Word模板文件另存为.xml文件(PS:建议使用WPS来创建Word文件,不建议用Office) 2.将.xml文件重命名为.ftl文件 3 ...

  4. 关于点击ztree的节点将页面生成到easyui的新增选项卡(easyui-tabs)时,总是在浏览器中生成一个新的页面的问题

    最近的项目中用到了easyui,还有ztree菜单.在这里将我遇到的一些问题写出来算是做个笔记吧. 这是我头一次在博客园里分享代码,我的处女作,写的不好的地方还望各位见谅! 由于很久没有写过前台的东西 ...

  5. 网页静态化解决方案:Freemarker生成简单html页面

    FreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker与 Web 容器无关,即在 Web 运行时,它并不知道 Servlet 或 HTTP.它不仅 ...

  6. 使用freemarker模板生成word文档

    项目中最近用到这个东西,做下记录. 如下图,先准备好一个(office2003)word文档当做模板.文档中图片.姓名.性别和生日已经使用占位符代替,生成过程中将会根据实际情况进行替换. 然后将wor ...

  7. Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化

    模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则 ...

  8. SpringBoot2 整合FreeMarker模板,完成页面静态化处理

    本文源码:GitHub·点这里 || GitEE·点这里 一.页面静态化 1.动静态页面 静态页面 即静态网页,指已经装载好内容HTML页面,无需经过请求服务器数据和编译过程,直接加载到客户浏览器上显 ...

  9. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_10-freemarker静态化测试-基于模板文件静态化

    把resource拷贝到test目录下 只保留文件夹结构和test1.ftl这个模板文件就可以了. 新建一个包 编写测试类 使用freemaker提供的方法生成静态文件 Configuration是i ...

随机推荐

  1. C#拷贝文件

    public void FileCopy(string source, string target) { using (FileStream fileRead = new FileStream(sou ...

  2. JS基础_if练习三

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  3. Laravel使用whereHas进行过滤不符合条件的预加载with数据

    问题描述:目前有用户表,文章表,文章评论表,收藏表.我需要获我的收藏文章列表(可以被搜索,通过分类,文章标题等),通过收藏预加载with文章表,文章评论表,文章用户表 解决办法:通过whereHas限 ...

  4. CSS选择器(通配符选择器、标签选择器、类选择器、id选择器、群组选择器、后代选择器、子元素选择器和相邻元素选择器)

    通配符选择器  *   与任何元素匹配 派生选择器: 后代选择器(包含选择器):后代选择器可以选择作为元素后代的元素 A B    对A元素中的B元素应用样式 后代选择器中两个元素间的层次间隔可以是无 ...

  5. 第一章 PHP mySQL

    一,服务器环境搭建 1-1.Apache服务器.(端口号定义,http协议,开启和关闭) 服务器: 我们在浏览器浏览网页的时候,在地址栏中都会产生一个url.通过这个url,浏览器从互联网中找到一个网 ...

  6. 1 .net将xml反序列化

    public static T XmlToObject<T>(string str) where T : class { using (Stream stream = new Memory ...

  7. maven入门-- part3 生命周期

    简介: Maven有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是: Clean Lifecycle 在进行真正的构建之前进行一些清理工作. Default ...

  8. debian docker环境搭建

    环境(阿里): 登陆到系统: 我们主要看执行结果截图(所有命令都进行复制) 卸载旧版本: 使用 APT 安装: 这里 输入 y  然后等待执行结束 添加软件源的 GPG 密钥. 一开始我是手打的命令, ...

  9. servlet 如何处理多请求访问以及线程讲解

    servlet 如何处理多请求访问以及线程讲解 场景:js循环500次请求同一个后台接口,接口内部逻辑:1.查询商品数量,2.扣减商品数量 ,那么该接口是否需要考虑多线程并发安全问题? 分析: 1.先 ...

  10. Java常用类(一)Math类和Random类

    一.Math类 Math类中有一些常用的数学函数,比较简单,不进行详细解释,仅举例说明: 1.绝对值和取整 import java.lang.Math; public class Mat { publ ...