`
gym_1119
  • 浏览: 51634 次
  • 性别: 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程序

    NULL 博文链接:https://wildwolfjack.iteye.com/blog/591048

    freemarker总结

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

    超完整FreeMarker中文教程,代码

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

    FreeMarker 手册

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

    FreeMarker中文指导手册

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

    Java Web程序设计教程

    2.4项目实战——第一个javaee应用:helloworld 28 2.4.1开始创建第一个javaee应用 28 2.4.2熟悉helloworld框架结构 29 本章小结 32 课后练习 32 第3章jsp和servlet 33 3.1开发第一个jsp+servlet应用 33 3.1.1...

    基于SpringBoot+FreeMarker搭建的JavaWeb应用的快速开发平台源代码+数据库

    应用内置MySQL数据库脚本,程序第一次启动后会出现安装过程,根据要求填写系统会自动安装,默认数据库名称为webfast4dev, 数据库参数配置及外部文件管理目录默认指定为d:/webfast/demo4dev/appdata。若该目录不存在...

    Bug管理系统 struts2+sping2.5+hibernate3(1-2)

    这是第一部分 另见:http://download.csdn.net/source/1458356 软件名称: DEBUG信息管理系统 版本: 3.0 说明: 本程序采用struts2.0+spring2.5+hiberhate3架构开发。 主要展示技术包括:三层架构 freemarker模版 ...

    Bug管理系统 struts2+sping2.5+hibernate3(2-2)

    本程序是作者学习struts spring hibernate构架后为了练习开发的一个小程序。开发此程序的目的是为了验证框架技术在项目中的应用。本程序尽量包含了开发当中遇到的一些问题及解决方案。同时欢迎广大网友到作者的群内...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    第1章 Model 2应用程序 1 1.1 Model 2概览 1 1.2 带servlet控制器的Model 2 2 1.2.1 Product动作类 3 1.2.2 ControllerServlet类 4 1.2.3 视图 6 1.2.4 部署描述文件 8 1.2.5 示例程序的运行 9 1.3 带过滤器调度程序...

    深入浅出Struts2(附源码)

    第1章 Model 2应用程序 1 1.1 Model 2概览 1 1.2 带servlet控制器的Model 2 2 1.2.1 Product动作类 3 1.2.2 ControllerServlet类 4 1.2.3 视图 6 1.2.4 部署描述文件 8 1.2.5 示例程序的运行 9 1.3 带过滤器...

    apache click-2.3.0框架 例子(1)

    Apache Click 是一个先进的Java企业版的Web应用程序框架,提供一个基于浏览器的富客户端编程模型。非常简单和易用,一般的开发人员在一天内就可以上手使用。 主要的特点包括: * 易学 * 面向组件和页面的设计 *...

    dropwizard-bbs:Dropwizard + MongoDB示例应用程序

    这是一个示例应用程序,用于演示与集成的Dropwizard的功能。 该应用程序处理基本的REST方法, CRUD操作和Dropwizard v0.8.1的其他功能。 涵盖的功能 资源 自定义配置 指标 健康检查 查看( ) 静态文件服务 任务 ...

    Spring全家桶核心篇:SpringBoot快速入门 源码

    内容概要:该资源是Spring全家桶视频课程的第三部分Spring Boot的源码,其对于Spring Boot的最常用的第一个小程序、JavaConfig和常见注解、启动改变、热部署、Springboot整合Thymeleaf/freemarker/JSP、异常处理、...

    spring in action英文版

    第一部分 Spring基础  第1章 开始Spring之旅  1.1 为什么使用Spring  1.1.1 J2EE开发者的一天  1.1.2 Spring的承诺  1.2 Spring是什么  1.3 开始Spring之旅  1.4 理解反向控制  1.4.1 依赖...

    Struts2教程

    Struts2 Struts2 Struts2 教程 1 1 1 :第一个 Struts2 Struts2 Struts2 程序 在本系列教程中我们将学习到 Struts2 的各种技术。在本教程中使用的工具和程序库的版本 如下: 开发工具: MyEclipse6 Web 服务器: ...

    annotated-spring-episode-004:CRUD Web应用

    CRUD Web应用程序:第1部分-创建和阅读 介绍 我们将构建一个简单的笔记网络应用程序,使我们可以创建,查看,列出和编辑使用流行的语法编写的笔记。 在第一部分中,我们将实现创建和阅读。 在以后的剧集中,我们将...

    基于Java的CMS内容管理系统 附Windows/Liniux 完整安装文件及demo

    Magnolia 的开源技术、对 CMIS 和 JCR 等开放标准的支持以及与 Spring Framework 的集成,使开发人员能够解锁后端系统和第三方应用程序。 很 知名强企业都在使用该系统 功能特点 易于使用、功能齐全且高度可扩展 ...

Global site tag (gtag.js) - Google Analytics