题外话:
       页面静态化(展示数据从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. EF入门-CRUD操作

    一.EF数据查询假设我们已经定义好了context:private AccountContext db = new AccountContext(); 1.[基本查询] 查询所有var users = ...

  2. MVC4学习要点记四

    一.使用原生SQL使用EF的一个优点就是自动帮我们生成SQL,这在常规情况下很方便,但有些情况下用EF却不适合.另外还有些特别复杂的语句,利用EF很难生成.所以,EF提供一组方法用来执行原生的SQL. ...

  3. rsync 文件同步 linux

    3.rsync+sersync更快更节约资源实现web数据同步4.unison+inotify实现web数据双向同步

  4. shiro权限控制配置

    shiro配置流程 web.xml中配置shiro的filter spring中配置shiro的过滤器工厂,指定对不同地址权限控制 , 传入安全管理器 配置安全管理器,传入realm,realm中定义 ...

  5. S=a+aa+aaa...(js)

    /*求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字. 例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制.*/ let readline = ...

  6. eclipse中svn从分支合并到主干及冲突解决

    https://blog.csdn.net/shengqianfeng/article/details/79203156

  7. Kernel boot options

    There are three ways to pass options to the kernel and thus control its behavior: When building the ...

  8. Java 通过Math.random() 生成6位随机数

    public static void main(String[] args) { String sjs=""; for (int i = 0; i < 6; i++) { i ...

  9. Java编程思想第四版完整中文高清版.pdf

    Java编程思想第四版完整中文高清版.pdf 链接: https://pan.baidu.com/s/1vV5BHF3L-bnaG6WGurdJ_A 提取码: vigy 复制这段内容后打开百度网盘手机 ...

  10. TextView跑马灯

    TextView跑马灯 textView跑马灯实现:1.定义textView标签的4个属性:android:singleLine="true"//使其只能单行android:ell ...