肤浅的理解:
FreeMarker是一种模板引擎,纯java开发,开源。在用FreeMarker开发时,我们需要事先定义相应的模板文件,FreeMarker模板文件(*.ftl)是一个文本文件,开发者可以在这个文件中加入FreeMarker表达式,这些表达式就好比jsp中的jstl标签一样,在客户端显示时会被真实的数据替换。
示例,大体分为三步:
1、创建一个web工程。
2、在lib目录中导入freemarker.jar。
3、编写一个模板文件和一个供客户端访问的servlet。
*模板文件的内容可以是HTML+FreeMarker表达式,servlet将业务数据准备好,并且初始化FreeMarker,设置好编码方式(默认编码和响应编码都需要设置,否则会有乱码问题)和需要调用的模板文件。
下面是模板文件:HelloFreeMarker.ftl
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>MyFreeMarkerTestHtml.html</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<font color="red">${hello}</font><br/>
<table>
<tr>
<td>序号</td>
<td>文件名称</td>
<td>文件类型</td>
<td>修改时间</td>
<td>文件大小</td>
<td>位置</td>
</tr>
<#list files as fs>
<tr>
<td>${fs.id}</td>
<td>${fs.fileName}</td>
<td>${fs.type}</td>
<td>${fs.modifyDate}</td>
<td>${fs.size}</td>
<td>${fs.absolutePath}</td>
</tr>
</#list>
</table>
</body>
</html>
servlet:FreeMarkerTest.java
package test.web;
import java.io.IOException;
import java.io.Writer;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import main.com.zephyr.service.impl.HtmlFileServiceImpl;
public class FreeMarkerTest extends HttpServlet {
private static final long serialVersionUID = 3452052702326883786L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//业务数据获取类
HtmlFileServiceImpl hfs = new HtmlFileServiceImpl();
//该方法遍历一个指定目录下的文件,将文件名、文件类型、文件大小等信息封装成一个类,最后将这些类添加到一个list中
List list = hfs.browseDirectory();
//开始设置Freemarker
Configuration cfg = new Configuration();
//设置Freemarker默认编码,如果不设,FreeMarker在遇见中文操作系统时,会使用默认的GBK编码方式
cfg.setDefaultEncoding("UTF-8");
//设置模板文件所在的目录
cfg.setServletContextForTemplateLoading(getServletContext(),
"WEB-INF/templates");
// 取得模板文件
Template t = cfg.getTemplate("HelloFreeMarker.ftl");
//设置响应编码
response.setContentType("text/html; charset=UTF-8");
//将需要在客户端浏览器中显示的业务数据放在一个map中,传递给FreeMarker
Map root = new HashMap();
root.put("hello", "Hello FreeMarker!");
root.put("files", list);
Writer out = response.getWriter();
try {
//在servlet中,输出流一定要从response中获取
t.process(root, out);
} catch (TemplateException e) {
e.printStackTrace();
}
}
}
最后,在web容器中发布该工程,用浏览器访问FreeMarkerTest,我们就可以看到最终的效果了。
附件中是项目要用到的jar包,版本是2.3.15。
分享到:
相关推荐
最近比较折腾,项目里需要用到静态化,于是就抽时间学习了一下。使用main方法执行,对于刚学习的人来说非常合适的例子。
NULL 博文链接:https://zfms.iteye.com/blog/1481440
springboot整合freemarker例子
SSH freemarker例子
SpringMVC简单配置及整合Freemarker例子。SpringMVC+Freemarker
一个初学者freemarker学习例子 一个初学者freemarker学习例子
freemarker百分百值得一看的demo,
freemarker自学代码
freemarker简单例子
spring mvc freemarker 简单例子
新建java project,引入freemarker.jar, 本工程是用的版本:freemarker-2.3.20 版本 java工程目录如下: test.ftl文件 name : ${name} age : ${age} test类 package com.freemarker; import java.io...
自己写的一个struts2+freemarker例子 供大家研究一下,这两者互相调用的流程机制..
freeMarker生成html实用例子
freemarker 与sitemesh 整合!是一个不错的例子
Java用freemarker导出word例子详见我的博客