昨天完成了一部分的今天在上次的基础上,完成完成生成HTML静态页面的操作,中间会涉及一点标签的简单使用。今天的代码有一丢丢的对付的感觉!抱歉了,直接就上代码吧!求原谅!

项目结构目录如下:

第一步,新建一个类com.shxt.model.User

package com.shxt.model;

public class User {

    private String account;
private Integer age; public User() {
}
public User(String account, Integer age) {
this.account = account;
this.age = age;
} public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
} }

第二步,在FreemarkerUtils中新建一个方法,这个方法就不过多的介绍了,很简单的!

/**
* 到处HTML静态文件
* @param name
* @param root
* @param outFile
*/
public void exportHtml(String name,Map<String, Object> root,String outFile){
FileWriter out = null;
try {
out = new FileWriter("D:\\temp\\"+outFile);
//通过Template可以将模版文件输出到相应的文件流
Template template = this.getTemplate(name);
template.process(root, out);//在控制台输出内容
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(out!=null)
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
} }

这里需要注意的是,我目前的输出地址为绝对路径,这里只是学习使用

第三步,测试数据项

@Test
public void exportHtml() {
// 1.创建数据模型
Map<String, Object> root = new HashMap<String, Object>();
// 2.赋值
root.put("user_name", "胖先生");
//传递数据之一个对象
root.put("user", new User("四胖子",18));
//传递一个结合显示
List<User> userList = Arrays.asList(new User("1号胖子",19),new User("2号胖子",30),new User("3号胖子",50));
root.put("userList", userList);
// 3.生成HTML文件
fu.exportHtml("demo02.ftl", root, "哈哈.html");
}

第四步,建立ftl包下建立demo02.ftl文件,代码如下

<!DOCTYPE html>
<html>
<head>
<title>生成静态的HTML代码</title>
<meta charset="UTF-8">
</head> <body>
<h1>你好:${user_name}</h1>
<hr/>

<h2>对象数据:${user.account}----${user.age}</h2>
<#if user.age lt 17>
你为成年
<#else>你成年了
</#if>

<hr/> <h2>遍历数据</h2>
<#list userList as user>
<#-- 我是注释:如何现实行号 -->
${user_index+1} ---- ${user.account}----${user.age}
<#if !user_has_next>
共有${userList?size}最后一个用户是:${user.account}
</#if>
<br/>
</#list> </body>
</html>

第五步,运行一下测试类,结果如下

需要你们的支持,才是胖先生的动力,我会坚持!我的务实希望能让你们有所收获

最新文章

  1. 当我们在谈论kmeans(1)
  2. OpenCASCADE Make Primitives-Box
  3. 第21章 java线程(1)-线程初步
  4. ASP.NET 页生命周期
  5. RML-怎样的语句会被归纳为同一类型(Unique Batches)
  6. Activator.CreateInstance 反射实例化对象
  7. Trie
  8. DirectX 基础学习系列6 字体
  9. 关于OneProxy推广
  10. 右下角弹出&quot;Windows-延缓写入失败&quot;或者&quot;xxx-损坏文件 请运行Chkdsk工具&quot;
  11. 如何用DELPHI编程修改外部EXE文件的版本信
  12. svn 相关
  13. 【网络流24题】 No.5 圆桌问题 (多重匹配)
  14. MySQL增删改查的常用操作指令总结
  15. 转:小心,apc可能导致php-fpm罢工!
  16. cpan安装及其使用
  17. ECOS-Ecstore 后台管理地址修改
  18. @vue-cli3创建项目报错:ERROR command failed: npm install --loglevel error --registry=https://registry.npm.taobao.org --di
  19. 两种库解析、构造 JSON
  20. Java高级框架------Spring(二)

热门文章

  1. 小米 OJ 编程比赛 02 月常规赛
  2. [leetcode-693-Binary Number with Alternating Bits]
  3. 福大软工1816:Alpha(6/10)
  4. &lt;Effective C++&gt;读书摘要--Introduction
  5. Qt窗口及控件-窗口Close()自动释放
  6. 【week2】燃尽图
  7. linux系统中如何进入退出vim编辑器的方法及区别
  8. 【Docker 命令】- rmi命令
  9. [计算机网络-应用层] FTP协议
  10. BZOJ4710 JSOI2011分特产(容斥原理+组合数学)