`
format_me
  • 浏览: 31771 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

FreeMarker 例子

    博客分类:
  • java
阅读更多

肤浅的理解:

    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。

 

 

3
1
分享到:
评论
3 楼 wpf211314 2013-11-08  
大神,最近我也在写freemark生成word的问题,有个问题请教一下啊

考核年度 考核结果 考核年度 考核结果 考核年度 考核结果 考核年度 考核结果
2000 合格 2001 优秀 2002 合格 2003 合格

像这样的情况怎么实现啊。求赐教啊。
2 楼 format_me 2013-03-26  
llchen 写道
有完整的代码没?

把上面的代码复制粘贴一下就可以用。记得引包哦,呵呵。
1 楼 llchen 2012-04-17  
有完整的代码没?

相关推荐

    freeMarker例子

    在这个“freeMarker例子”中,我们可以深入学习FreeMarker的基本用法和特点。博客链接指向了iteye上的一个博客,尽管具体内容未给出,但通常会包含FreeMarker的安装、配置、基本语法、控制结构、内置函数以及与其他...

    freemarker 例子

    最近比较折腾,项目里需要用到静态化,于是就抽时间学习了一下。使用main方法执行,对于刚学习的人来说非常合适的例子。

    springboot整合freemarker例子

    Freemarker是一个强大的、轻量级的、基于模板的语言,它与Java紧密集成,广泛应用于Web开发中。下面我们将深入探讨Spring Boot如何与Freemarker整合以及其相关知识点。 ### 一、Freemarker基础 1. **模板语法**:...

    SSH freemarker例子学习 拿来就能用 注释全面

    在这个例子中,我们将深入探讨如何在SSH框架中使用FreeMarker模板语言。 FreeMarker是一个强大的、轻量级的模板引擎,它允许开发者将业务逻辑与展示层分离,使得页面设计更加灵活。FreeMarker模板文件通常以`.ftl`...

    SpringMVC整合Freemarker例子

    SpringMVC是一个强大的Java web开发框架,用于构建后端服务,而FreeMarker则是一个模板引擎,主要用于处理视图层的渲染。将这两者整合可以实现MVC架构中的Model-View-Controller模式,使得业务逻辑与展示逻辑分离,...

    freemarker学习例子

    这个“freemarker学习例子”应该包含了一些基础到进阶的Freemarker用法,帮助初学者快速上手。 在Freemarker中,主要涉及以下几个核心概念: 1. **模板(Templates)**:模板是Freemarker的核心,它是HTML或其他文本...

    freemarker例子

    在本示例中,"freemarker"这个压缩包文件很可能包含了一些示例代码和资源,用于展示如何在实际项目中使用Freemarker。 首先,我们需要理解Freemarker的基本语法。Freemarker模板语言(FTL)主要由三部分组成:变量...

    freemarker代码

    本自学代码资源将帮助你深入理解Freemarker的工作原理及其在实际项目中的应用。 一、Freemarker基本概念 1. 模板:Freemarker的核心是模板,模板是HTML或其他文本文件,其中包含Freemarker表达式和指令,这些元素会...

    freemarker两种用法,struts1.2的

    标签“freemarker例子”和“直接运行”提示我们可以找到一些实际运行的示例来进一步理解这些概念。在提供的压缩包中,虽然没有具体的文件,但通常会包含一个示例工程,里面可能有配置文件、Freemarker模板文件和处理...

    freemarker简单例子

    在这个“freemarker简单例子”中,我们将深入理解Freemarker的基本概念、配置以及如何在实际项目中使用。 1. **Freemarker基本概念** - **模板(Template)**:Freemarker的核心是模板,它定义了最终输出的静态...

    Java工程中使用freemarker例子

    - `DefaultObjectWrapper` 是用于将Java对象包装成FreeMarker可以理解的数据模型,但在这个例子中并未使用。 6. **扩展应用**: - FreeMarker不仅仅可以用于简单的字符串替换,还可以处理复杂的逻辑,比如条件...

    spring mvc freemarker 简单例子

    通过这个简单的例子,我们可以看到Spring MVC和Freemarker的集成过程。在实际开发中,这只是一个基础的配置,可以根据项目需求进行更复杂的模板设计和数据绑定。例如,可以利用Freemarker的条件判断、循环结构、函数...

    struts2&&freemarker

    例如,`struts2&&freemarker例子.txt`可能包含了一个简单的Freemarker模板示例,展示了如何从Struts2的Action获取数据并展示。而未列出的另一个文件可能是实际的Freemarker模板文件,或者是关于Struts2和Freemarker...

    一个意义深刻 FreeMarker 入门例子之HelloWord

    本示例“一个意义深刻的FreeMarker入门例子之HelloWord”旨在帮助初学者理解并掌握FreeMarker的基本用法。 在Java Web开发中,FreeMarker与后端控制器如Servlet或Spring MVC中的Controller协同工作,允许开发者将...

    freemarker中文手册

    三、Freemarker例子 1. 输出变量: ```html &lt;h1&gt;Welcome, ${user.name}! ``` 这行代码会输出一个欢迎消息,其中用户名来自数据模型的user对象。 2. 条件判断: ```html ()&gt; &lt;p&gt;You are an admin. &lt;p&gt;You ...

    freemarker入门文档及例子

    1. 用户列表展示:一个简单的例子,展示如何使用Freemarker遍历用户列表并显示用户信息,如用户名、邮箱等。 2. 动态生成邮件:另一个实例可能是创建一个模板,动态地根据用户数据生成个性化的电子邮件内容,如问候...

Global site tag (gtag.js) - Google Analytics