肤浅的理解:
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。
分享到:
相关推荐
在这个“freeMarker例子”中,我们可以深入学习FreeMarker的基本用法和特点。博客链接指向了iteye上的一个博客,尽管具体内容未给出,但通常会包含FreeMarker的安装、配置、基本语法、控制结构、内置函数以及与其他...
最近比较折腾,项目里需要用到静态化,于是就抽时间学习了一下。使用main方法执行,对于刚学习的人来说非常合适的例子。
Freemarker是一个强大的、轻量级的、基于模板的语言,它与Java紧密集成,广泛应用于Web开发中。下面我们将深入探讨Spring Boot如何与Freemarker整合以及其相关知识点。 ### 一、Freemarker基础 1. **模板语法**:...
在这个例子中,我们将深入探讨如何在SSH框架中使用FreeMarker模板语言。 FreeMarker是一个强大的、轻量级的模板引擎,它允许开发者将业务逻辑与展示层分离,使得页面设计更加灵活。FreeMarker模板文件通常以`.ftl`...
SpringMVC是一个强大的Java web开发框架,用于构建后端服务,而FreeMarker则是一个模板引擎,主要用于处理视图层的渲染。将这两者整合可以实现MVC架构中的Model-View-Controller模式,使得业务逻辑与展示逻辑分离,...
这个“freemarker学习例子”应该包含了一些基础到进阶的Freemarker用法,帮助初学者快速上手。 在Freemarker中,主要涉及以下几个核心概念: 1. **模板(Templates)**:模板是Freemarker的核心,它是HTML或其他文本...
在本示例中,"freemarker"这个压缩包文件很可能包含了一些示例代码和资源,用于展示如何在实际项目中使用Freemarker。 首先,我们需要理解Freemarker的基本语法。Freemarker模板语言(FTL)主要由三部分组成:变量...
本自学代码资源将帮助你深入理解Freemarker的工作原理及其在实际项目中的应用。 一、Freemarker基本概念 1. 模板:Freemarker的核心是模板,模板是HTML或其他文本文件,其中包含Freemarker表达式和指令,这些元素会...
标签“freemarker例子”和“直接运行”提示我们可以找到一些实际运行的示例来进一步理解这些概念。在提供的压缩包中,虽然没有具体的文件,但通常会包含一个示例工程,里面可能有配置文件、Freemarker模板文件和处理...
在这个“freemarker简单例子”中,我们将深入理解Freemarker的基本概念、配置以及如何在实际项目中使用。 1. **Freemarker基本概念** - **模板(Template)**:Freemarker的核心是模板,它定义了最终输出的静态...
- `DefaultObjectWrapper` 是用于将Java对象包装成FreeMarker可以理解的数据模型,但在这个例子中并未使用。 6. **扩展应用**: - FreeMarker不仅仅可以用于简单的字符串替换,还可以处理复杂的逻辑,比如条件...
通过这个简单的例子,我们可以看到Spring MVC和Freemarker的集成过程。在实际开发中,这只是一个基础的配置,可以根据项目需求进行更复杂的模板设计和数据绑定。例如,可以利用Freemarker的条件判断、循环结构、函数...
例如,`struts2&&freemarker例子.txt`可能包含了一个简单的Freemarker模板示例,展示了如何从Struts2的Action获取数据并展示。而未列出的另一个文件可能是实际的Freemarker模板文件,或者是关于Struts2和Freemarker...
本示例“一个意义深刻的FreeMarker入门例子之HelloWord”旨在帮助初学者理解并掌握FreeMarker的基本用法。 在Java Web开发中,FreeMarker与后端控制器如Servlet或Spring MVC中的Controller协同工作,允许开发者将...
三、Freemarker例子 1. 输出变量: ```html <h1>Welcome, ${user.name}! ``` 这行代码会输出一个欢迎消息,其中用户名来自数据模型的user对象。 2. 条件判断: ```html ()> <p>You are an admin. <p>You ...
1. 用户列表展示:一个简单的例子,展示如何使用Freemarker遍历用户列表并显示用户信息,如用户名、邮箱等。 2. 动态生成邮件:另一个实例可能是创建一个模板,动态地根据用户数据生成个性化的电子邮件内容,如问候...