【FreeMarker】FreeMarker快速入门(一)
2024-08-23 04:27:44
什么是 FreeMarker
FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
模板编写为FreeMarker Template Language (FTL)。它是简单的,专用的语言, 不是 像PHP那样成熟的编程语言。 那就意味着要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,你可以专注于如何展现数据, 而在模板之外可以专注于要展示什么数据。
FreeMarker使用
1、新建一个Maven工程,引入依赖
<!-- freemarker -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
2、在src/main/resources/templates目录下新建模板-test.ftl
<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h1>Welcome ${user}!</h1>
<p>Our latest product:
<a href="${latestProduct.url}">${latestProduct.name}</a>!
</body>
</html>
3、编辑测试类
package com.test.freemarker; import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map; import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateExceptionHandler; public class Test { private static final String TEMPLATE_PATH = "src/main/resources/templates"; public static void main(String[] args) throws IOException {
// step1 创建freeMarker配置实例
// 创建freeMarker配置实例
Configuration cfg = new Configuration(Configuration.VERSION_2_3_28);
// 获取模版路径
cfg.setDirectoryForTemplateLoading(new File(TEMPLATE_PATH));
// 设置默认编码格式
cfg.setDefaultEncoding("UTF-8");
// 设置异常处理器
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER); Writer out = null;
try {
// step2 创建数据模型
Map root = new HashMap();
root.put("user", "Big Joe");
Map latest = new HashMap();
root.put("latestProduct", latest);
latest.put("url", "products/greenmouse.html");
latest.put("name", "green mouse"); // step3 加载模版文件
Template temp = cfg.getTemplate("test.ftl"); // step4 生成数据
out = new OutputStreamWriter(System.out);
temp.process(root, out); } catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != out) {
out.flush();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
4、运行,结果如下:
最新文章
- *使用while循环遍历数组创建索引和自增索引值
- Android 网络状态检测
- 放下恩怨,曝小米中兴投关键性一票让华为顺利取得5G短码控制权
- 手机升级到iOS10,用Xcode7.3进行真机调试方法
- Linux网络编程-readn函数、writen函数、readline函数实现
- CvMat 矩阵的使用方法和简单程序
- UITextView打开文字中的URL
- [Hibernate] - Study 1
- gulp自己主动化任务脚本在HybridApp开发中的使用
- Android模拟器报";Failed To Allocate memory 8";错误的解决办法
- 【BZOJ2741】【块状链表+可持久化trie】FOTILE模拟赛L
- Python学习笔记整理(十)Python的if测试
- 【转】C++成员函数的存储方式
- Android开发实现透明通知栏
- import android.provider.Telephony cannot be resolved
- 导航栏项目滑过时子菜单显示/隐藏jquery代码
- iOS视频编辑SDK
- Erlang Rebar 使用指南之四:依赖管理
- SpringBoot使用Mybatis注解开发教程-分页-动态sql
- Android Studio自定义组合控件
热门文章
- 《少年先疯队》第九次团队作业:Beta冲刺第二天
- 运行Vue项目,没办法自动打开浏览器,提示“Unable to open browser. If you are running in a headless environment, please do not use the open flag.”
- HDU2870 Largest Submatrix
- epoll版http服务器
- Hibernate框架的查询方式
- 动手动脑-------找出指定文件夹下所有扩展名为.txt和.java的文件
- BZOJ 4332: JSOI2012 分零食 FFT+分治
- 史上最全java pdf精品书籍整理
- ubuntu之路——day8.2 深度学习优化算法之指数加权平均与偏差修正,以及基于指数加权移动平均法的动量梯度下降法
- cmd命令net和sc