FreeMarker是一个用Java编写的模板引擎,主要用来生成HTML Web页面,特别是基于MVC模式的应用程序。FreeMarker基本可以取代JSP作为表现层技术。
FreeMarker官网http://freemarker.org/
FreeMarker输出=模板+数据模型
- 简单示例
新建模板文件test.ftl
<root name="${root}"> <id>${elements.id}</id> <name>${elements.name}</name> <age>${elements.age}</age> <city>${elements.city}</city> </root>
新建测试类
// 创建一个合适的configuration Configuration cfg = new Configuration(); // 获取或创建一个模版 Template template = cfg.getTemplate("src/test.ftl"); // 创建一个数据模型 Map<String, Object> root = new HashMap<String, Object>(); root.put("root", "root"); Map<String, Object> elements = new HashMap<String, Object>(); root.put("elements", elements); elements.put("id", "1"); elements.put("name", "yel"); elements.put("age", "30"); elements.put("city", "WH"); //打印到控制台 Writer out = new OutputStreamWriter(System.out); //生成到文件 Writer outFile = new OutputStreamWriter(new FileOutputStream("src/test.xml"), "utf-8"); template.process(root, out); template.process(root, outFile); out.close(); outFile.close();
首先加载模板文件test.ftl,封装在Template类中。数据模型封装在Map<String, Object>。最后通过两个输出流分别在文件和控制台中输出。
同样的道理可以在servlet中用freemarker生成页面。
修改模板test.ftl,放到/WEB-INF/templates目录下面
<html> <body> <h3>${message},${name}</h3> </body> </html>
新建servlet
public class HelloFreeMarker extends HttpServlet { // 负责管理FreeMarker模板的Configuration实例 private Configuration cfg = null; public void init() throws ServletException { // 创建一个FreeMarker实例 cfg = new Configuration(); // 指定FreeMarker模板文件的位置 cfg.setServletContextForTemplateLoading(getServletContext(), "/WEB-INF/templates"); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 建立数据模型 Map root = new HashMap(); root.put("message", "hello world"); root.put("name", "yel"); // 获取模板文件 Template t = cfg.getTemplate("test.ftl"); // 开始准备生成输出 // 使用模板文件的Charset作为本页面的charset // 使用text/html MIME-type response.setContentType("text/html;charset=" + t.getEncoding()); Writer out = response.getWriter(); // 合并数据模型和模板,并将结果输出到out中 try { t.process(root, out); // 往模板里写数据 } catch (TemplateException e) { e.printStackTrace(); } } public void destroy() { super.destroy(); } }
最后通过浏览器访问servlet后根据模板生成html页面。
- 常用标签
直接输出值
${}
判断
<#if name == "Yel">Hello,Yel</#if>
循环
<#list users as user> <li>${user.name} </#list>
相关推荐
综合了freemarker的入门文档 和 俩个小实例
freemarker入门freemarker入门freemarker入门freemarker入门
NULL 博文链接:https://pihai.iteye.com/blog/364030
FreeMarker与Struts2整合的入门Demo 直接布署在Servlet容器运行
freemarker入门共9页.pdf.zip
学习FreeMarker入门,很好的入门文档。
FreeMarker入门手册 FreeMarker入门手册 今天你学了吗
freemarker入门实例,直接运行(junit)测试类
JFinal+Maven+FreeMarker入门实例 JFinal这个框架确实不错,受够了Struts 2
Freemarker入门简介,资料,蛮有用的。
freemarker入门,自学
springboot集成freemarker的迷你案例,注意是迷你
FreeMarker的入门以及使用指南,想要学习的同学,希望对你们有帮助。
freemarker 入门资料,很经典, 是入门的最好教程
FreeMarker_Example.zip 包括两个目录 FreeMarkerTest目录是工程 templates文件夹请拷贝到c盘根目录下
NULL 博文链接:https://314858770.iteye.com/blog/966863
freemarker指南 博文链接:https://kenshinlk.iteye.com/blog/59084
freemarker的入门文档,可以帮助初学者了解freemarker模板技术。