`
gym_1119
  • 浏览: 53073 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

我的第一个FreeMarker程序

阅读更多

1、java应用程序中
??? 我用maven导入FreeMarker的jar包
???
??? <dependency>
????? <groupid>freemarker</groupid>
????? <artifactid>freemarker</artifactid>
????? <version>2.3.8</version>
??? </dependency>

??? package com.test;

import java.io.IOException;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;


import freemarker.cache.ClassTemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;

public class Test {

??? /** *//**
???? * @param args
???? */
??? public static void main(String[] args) {
??????? Configuration configuration = new Configuration();
??????? configuration.setObjectWrapper(new DefaultObjectWrapper());
??????? configuration.setTemplateLoader(new ClassTemplateLoader(Test.class, "/com/test"));
??????? try {
??????????? Template template = configuration.getTemplate("temp.ftl");
??????????? StringWriter writer = new StringWriter();
??????????? Map<string, object=""> context = new HashMap<string, object="">();
???????????
??????????? context.put("message", "我的第一个FreeMarker程序");
???????????
??????????? template.process(context, writer);
??????????? System.out.println(writer.toString());
??????? } catch (IOException e) {
??????????? // TODO Auto-generated catch block
??????????? e.printStackTrace();
??????? } catch (TemplateException e) {
??????????? // TODO Auto-generated catch block
??????????? e.printStackTrace();
??????? }
??? }

}

这里是用java应用程序,需要加入下面两句(设置模板文件载入):
方法一:
? configuration.setObjectWrapper(new DefaultObjectWrapper());
? configuration.setTemplateLoader(new ClassTemplateLoader(Test.class, "/com/test"));

其中"/com/test" 是模板文件所在的文件夹,前面的“/”必须,这里我的模板文件和当前java类在同一路径下,则这样写,如果你的模板文件在src跟目录下,这里只需要写“/”就可以了

context.put("message", "我的第一个FreeMarker程序");
是模板文件中用到的变量,map中的变量可以是javabean,也可以是对象


方法二:
configuration.setServletContextForTemplateLoading(getServletContext(), "WEB-INF/templates");
这里主要针对Servlet的时候,当然在Servlet中也可以用方法一提到的写法
package com.newegg.lab.freemarker.servlet;

import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import freemarker.cache.ClassTemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;

/** *//**
?* Servlet implementation class for Servlet: FreemarkerServlet
?*
?*/
public class FreemarkerServlet extends javax.servlet.http.HttpServlet implements
??????? javax.servlet.Servlet {

??? private Configuration configuration;

??? private Template template;
??? /**//*
???? * (non-Java-doc)
???? *
???? * @see javax.servlet.http.HttpServlet#HttpServlet()
???? */
??? public FreemarkerServlet() {
??????? super();
??? }

??? @Override
??? public void destroy() {
??????? // TODO Auto-generated method stub
??????? configuration = null;
??? }

??? @Override
??? public void init() throws ServletException {
??????? // TODO Auto-generated method stub
??????? configuration = new Configuration();
??????? configuration.setServletContextForTemplateLoading(getServletContext(), "WEB-INF/templates");
//??????? configuration.setObjectWrapper(new DefaultObjectWrapper());
//??????? configuration.setTemplateLoader(new ClassTemplateLoader(FreemarkerServlet.class, "/"));
??? }

??? /**//*
???? * (non-Java-doc)
???? *
???? * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request,
???? *????? HttpServletResponse response)
???? */
??? protected void doGet(HttpServletRequest request,
??????????? HttpServletResponse response) throws ServletException, IOException {
??????? // TODO Auto-generated method stub
??????? this.doPost(request, response);
??? }

??? /**//*
???? * (non-Java-doc)
???? *
???? * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request,
???? *????? HttpServletResponse response)
???? */
??? protected void doPost(HttpServletRequest request,
??????????? HttpServletResponse response) throws ServletException, IOException {
??????? // TODO Auto-generated method stub
??????? Map root = new HashMap();
??????? root.put("message", "Hello World!的的的的");

??????? // Get the templat object
??????? Template t = configuration.getTemplate("test.ftl");

??????? // Prepare the HTTP response:
??????? // - Use the charset of template for the output
??????? // - Use text/html MIME-type
??????? response.setContentType("text/html; charset=" + t.getEncoding());
??????? Writer out = response.getWriter();

??????? // Merge the data-model and the template
??????? try {
??????????? t.process(root, out);

??????????? StringWriter stringWriter = new StringWriter();
??????????? t.process(root, stringWriter);
??????????? System.out.println(stringWriter.toString());
??????? } catch (TemplateException e) {
??????????? throw new ServletException(
??????????????????? "Error while processing FreeMarker template", e);
??????? }
??? }
}


模板文件中需要使用 ${}将java类中在Map对象中声明的变量包围起来就可以了

例如模板文件:


//描述信息是 : ${message}


则得到的结果是:


//描述信息是 : Hello World!的的的的



礼物 2008-09-17 00:00 发表评论
分享到:
评论

相关推荐

    第一个FreeMarker HelloWorld程序

    通过阅读这篇博客文章(https://wildwolfjack.iteye.com/blog/591048),你可以更详细地了解如何设置和运行你的第一个FreeMarker程序。同时,提供的`MyFreeMarker`文件可能是包含这个示例代码的压缩包,你可以解压后...

    1开发freemarker准备工作,运行第一个freemarker1

    Freemarker是一个强大的、开源的模板引擎,主要应用于Java平台,用于生成动态Web内容。它是一种基于模板的技术,允许开发者将逻辑与展示分离,使得视图层的代码更加简洁、易于维护。FTL(FreeMarker Template ...

    FreeMarker通用的分页

    如果当前页小于等于一半显示页数,则显示从第一页开始的页码;反之,显示以当前页为中心的页码。 - **分段显示页码**:根据当前页和总页数,分两段显示页码。首先显示前半部分,然后是后半部分。这确保了用户界面的...

    FreeMarker 手册

    手册还涉及到FreeMarker程序开发指南,这部分内容涵盖了如何在实际项目中使用FreeMarker进行程序开发。它包括创建配置实例、数据模型的构建、模板的获取、模板与数据模型的合并,以及代码的组织。这部分的内容对于...

    freemarker的分页功能

    Freemarker是一个用于生成动态文本的模板引擎,它被广泛应用于Web开发中,用于将数据模型转换成HTML、XML或其他格式的文档。分页功能在Web应用中非常常见,它允许用户在大量数据中通过页面跳转来查看不同的数据片段...

    FreeMarker生成word文件

    1. **FreeMarker模板语言**:FreeMarker使用一种简单的模板语言,允许开发者通过定义变量和控制结构(如循环和条件语句)来动态地插入数据。在模板中,可以使用`&lt;#if&gt;`, `&lt;#foreach&gt;`, `${expression}`等语法来控制...

    java导出word之freemarker导出程序

    Java导出Word是Java开发中常见的一项任务,特别是在企业级应用中,经常需要将数据以文档形式导出供用户下载或打印。...但作为初学者,掌握上述基础已经足够启动你的第一个Freemarker Word导出程序。

    Freemarker中文文档

    在第一部分,模板开发指南,介绍了模板开发的基础知识。第1章模板开发入门详细解释了模板与数据模型结合生成输出的过程。随后,文档对数据模型和模板进行了详细分类与说明,其中数据模型包括标量、容器、方法等概念...

    FreeMarker内置函数

    - `first` 和 `last`: 获取集合的第一个或最后一个元素。 - `each_index`: 用于迭代集合并获取索引。 6. **其他实用函数** - `escape_html`: 避免XSS攻击,将字符串转义为安全的HTML实体。 - `url_encode`: 对...

    Freemarker详解

    first**: 返回序列的第一个元素。 - **sequence?last**: 返回序列的最后一个元素。 - **sequence?reverse**: 反转序列。 - **sequence?size**: 获取序列长度。 - **sequence?sort**: 对序列排序。 - **sequence?sort...

    FreeMarker

    1. FreeMarker模板是基于文本的,使用特定的语法标记来引用数据模型中的变量。 2. 数据模型是模板渲染时的数据源,通常由Java对象构成。 3. 模板和数据模型结合后,FreeMarker会根据模板中的指令和表达式生成最终...

    freemarker生成doc方案.zip

    Freemarker是一个基于模板的开源Java库,它与MVC模式中的视图层对应,用于生成文本输出。通过预先定义的模板和程序提供的数据模型,Freemarker能够自动生成各种格式的文档,包括HTML、XML、邮件正文等。其语法简洁...

    freemarker总结

    cap_first:使字符串第一个字母大写 lower_case:将字符串转换成小写 upper_case:将字符串转换成大写 trim:去掉字符串前后的空白字符 下面是集合的常用内建函数 size:获取序列中元素的个数 下面是数字值的常用...

    《FreeMarker 手册》

    手册分为四个部分,第一部分是模板开发指南,其中包含了模板开发的入门知识、数值和类型处理、模板的总体结构和指令使用、表达式的编写及插值方式。 在模板开发入门章节中,我们了解到模板和数据模型的关系,模板是...

    FreeMarker手册(中文版)

    ### 第一部分:模板开发指南 这部分内容主要面向模板设计者,介绍了模板开发的基础知识,包括模板的基本结构、指令、表达式、插值等。它详细解释了如何通过数据模型来构建模板,并生成最终的输出。模板和数据模型的...

    超完整FreeMarker中文教程,代码

    第一章 程序开发入门 ............................................................................................. 62 1.1 创建配置实例 .....................................................................

    FreeMarker中文参考手册

    ##### 第一章 程序开发入门 - **1.1 创建配置实例**:指导如何初始化FreeMarker的配置对象。 - **1.2 创建数据模型**:讲解了如何构建FreeMarker所需的数据模型。 - **1.3 获得模板**:说明了如何加载和准备模板。 -...

    第一个SSH手动整合程序

    这个"第一个SSH手动整合程序"是一个实用的教程,旨在帮助开发者了解如何将这三个框架集成到一个应用中,实现MVC(Model-View-Controller)架构的高效应用开发。 Spring框架是核心的依赖注入(Dependency Injection...

Global site tag (gtag.js) - Google Analytics