昨天完成了一部分的今天在上次的基础上,完成完成生成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>

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

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

[freemarker篇]02.生成HTML的静态页面的更多相关文章

  1. JavaWeb页面静态化之使用freemarker模板生成一个html静态页面

    题外话:       页面静态化(展示数据从JSP页面变成HTML页面)实现方式-->模板技术   从本质上来讲,模板技术是一个占位符动态替换技术.一个完整的模板技术需要四个元素:①模板语言(使 ...

  2. 浅谈php生成静态页面

    一.引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权 ...

  3. .net 生成 静态页面

    .net 生成 静态页面 <!--Main.Aspx--> <%@ page language="C#" %> <%@ import namespac ...

  4. 一个文件搞定Asp.net core 3.1动态页面转静态页面

    最近一个Asp.net core项目需要静态化页面,百度查找了一下,没有发现合适的.原因如下 配置麻烦. 类库引用了第三方类,修改起来麻烦. 有只支持MVC,不支持PageModel. 继承Actio ...

  5. 使用freemarker生成静态页面

    一 说明 需要在spring mvc项目中加入下列包: <dependency> <groupId>org.freemarker</groupId> <art ...

  6. Freemarker生成HTML静态页面

    这段时间的工作是做一个网址导航的项目,面向用户的就是一个首页,于是就想到了使用freemarker这个模板引擎来对首页静态化. 之前是用jsp实现,为了避免用户每次打开页面都查询一次数据库,所以使用了 ...

  7. 比较详细PHP生成静态页面教程

    一,PHP脚本与动态页面. PHP脚本是一种服务器端脚本程序,可通过嵌入等方法与HTML文件混合, 也可以类,函数封装等形式,以模板的方式对用户请求进行处理.无论以何种方式,它的基本原理是这样的.由客 ...

  8. FreeMarker 乱码解决方案 生成静态html文件

    读取模板的时候有一个编码: Template template = this.tempConfiguration.getTemplate(templatePath,"UTF-8") ...

  9. PHP代码为什么不能直接保存HTML文件——&gt;PHP生成静态页面教程

    1.server会依据文件的后缀名去进行解析,假设是HTML文件则server不会进行语法解析.而是直接输出到浏览器. 2.假设一个页面中所有都是HTML代码而没有须要解析的PHP语法,则没有必要保存 ...

随机推荐

  1. 一道java笔试题

    输入一串用空格隔开的数字串,对于数字串的奇数位按升序排序,偶数位按降序排序. 示例输入: 4 6 2 3 6 7 8 1 处理过程: 奇数位:4 2 6 8 升序排序结果: 2 4 6 8 偶数位:6 ...

  2. [C++] Class (part 1)

    The fundamental ideas behind classes are data abstraction and encapsulation. Data abstraction is a p ...

  3. 课堂练习之找数字0-N中“1”出现的次数

    一.题目与要求 题目:给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数. 要求:1.写一个函数 f(N) ,返回1 到 N 之间出现的“1”的个数.例如 f(12) ...

  4. JSP在页面加载时调用servlet的方法

    方法:先在JS里面写一个调用servlet的事件(可以利用ajax),然后利用<body>标签的onload调用这个事件. 代码如下: jsp文件代码如下: <%@ page lan ...

  5. server2003 必要的系统优化和安全设置

    修改远程桌面端口: Windows 2003系统中的远程终端服务是一项功能非常强大的服务,同时也成了入侵者长驻主机的通道,入侵者可以利用一些手段得到管理员账号和密码并入侵主机.下面,我们来看看如何通过 ...

  6. 第28天:js-Tab栏切换封装函数

    一.input.value所有值都是string 二.变量和属性var index=10;//变量var arr=[];//数组arr.index=20;//index为自定义属性,只能在arr下使用 ...

  7. 操作 使用XML的方法

    XmlHelper是一个工具类 public static class XMLHelper { /// <summary> /// XML的编码方式,默认是UTF-8 /// </s ...

  8. 【Python】Python中*args 和**kwargs的用法

    好久没有学习Python了,应为工作的需要,再次拾起python,唤起记忆. 当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值. 还是 ...

  9. Python数据定义

    数据类型: 什么是数据? 在计算机科学中,数据是指所有能输入到计算机并被计算机程序处理的符号的介质的总称,是用于输入电子计算机进行处理,具有一定意义的数字字母.符号和模拟量等的统称.现在计算机存储和处 ...

  10. 【题解】SCOI2007组队

    恩……为什么大家都这么执着于 \(O(n^{2})\) 的复杂度捏?如果接受 \(O(n^{2} + nV)\) 的复杂度,那这题可不是道**题吗( • ̀ω•́ )✧ 首先把所有的人按照身高排个序, ...