`
xiaophai
  • 浏览: 9358 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

freemarker学习例子

阅读更多
freemarker调用模板.ftl文件,生成静态shtml文件
public class ControllerServletS extends HttpServlet {
private Configuration cfg;
public void init() {
          // 初始化FreeMarker配置;
          // - 创建一个配置实例
        cfg = new Configuration();
          // - 设置模板目录.
        cfg.setServletContextForTemplateLoading(
                getServletContext(), "WEB-INF/tmpl");
          // - 设置模板延迟时间,测试环境设置为0,正是环境可提高数值.
        cfg.setTemplateUpdateDelay(0);
          // - 设置错误句柄
        cfg.setTemplateExceptionHandler(
                TemplateExceptionHandler.HTML_DEBUG_HANDLER);
        cfg.setObjectWrapper(ObjectWrapper.BEANS_WRAPPER);
          // - 设置默认模板编码
        cfg.setDefaultEncoding("gbk");
          // - 设置输出编码
        cfg.setOutputEncoding("gbk");
        cfg.setLocale(Locale.SIMPLIFIED_CHINESE);
    }
Template t = cfg.getTemplate(page.getTemplate());
//此处调模板直接输出到终端显示,不生成静态页面.
//Writer out = resp.getWriter();
//try {
                //t.process(page.getRoot(), out);
         //   } catch (TemplateException e) {
              // throw new ServletException(
                      // "加载FreeMarker模板出错", e);
           // }

此处生成静态页面
try{
Template t=cfg.getTemplate(templateFileName);
File afile=new File(htmlFilePath+htmlFileName);
Writer out=new OutputStreamWriter(new FileOutputStream(afile),"GB2312");
StringWriter write=new StringWriter();
write.flush();
t.process(propMap, out);
System.out.println(write.toString());
}catch(TemplateException e){
logger.error("error"+templateFileName,e);
return false;
}catch(IOException e){
logger.error("error"+htmlFileName,e);
return false;
}
}

freemarker实例搭建环境和配置
下面演示一个简单的使用项目过程:
1. 使用myeclipse创建一个web项目testFM
2. 把下载到的jar包(freemarker-2.3.9.jar)放到\WebRoot\WEB-INF\lib目录下。下载地址:http://freemarker.sourceforge.net/freemarkerdownload.html (注:官方网站.org的经常打不开)
3. 在WebRoot下面新建templates文件包,然后在里面新建扩展名为ftl的模板。
a) 创建hello.ftl内容如下:
<html>

<head>

<title>hello!</title>

</head>

<body>

<h1>hello ${user}!</h1>

</body>

</html>

4. 在src目录下创建example包 和Hello.java文件,代码如下:
package example;

import java.io.*;

import java.util.*;


import javax.servlet.ServletException;
  import javax.servlet.http.*;

import freemarker.template.*;

public class Hello extends HttpServlet{
  private Configuration cfg;

public void init()

{

   //初始化FreeMarker配置

        //创建一个Configuration实例

        cfg = new Configuration();

        //设置FreeMarker的模版文件位置

   cfg.setServletContextForTemplateLoading(getServletContext(),"templates");

}

public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
  {

   //建立数据模型

   Map root = new HashMap();

   //放入对应数据key value

   root.put("user","zdz");

   //取得模版文件

   Template t =cfg.getTemplate("hello.ftl");

   //开始准备生成输出

        //使用模版文件的charset作为本页面的charset

        //使用text/html MIME-type

        response.setContentType("text/html; charset=" + t.getEncoding());

   PrintWriter out = response.getWriter();

   //合并数据模型和模版,并将结果输出到out中

   try

   {

    t.process(root,out);// 用模板来开发servlet可以只在代码里面加入动态的数据

   }

   catch(TemplateException e)

   {

    throw new ServletException("处理Template模版中出现错误", e);

   }

}

}
5.配置web.xml 代码如下:

<?xml version="1.0" encoding="UTF-8"?>
  <web-app version="2.4"

xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<servlet>

    <servlet-name>Hello</servlet-name>

    <servlet-class>example.Hello</servlet-class>

</servlet>

<servlet-mapping>

    <servlet-name>Hello</servlet-name>

    <url-pattern>*.do</url-pattern>

</servlet-mapping>

<welcome-file-list>

      <welcome-file>index.html</welcome-file>

</welcome-file-list>

</web-app>
6.在WebRoot下面新建引导页面index.html,代码如下:

<html>
  <head>

<title>Hello FreeMarker Example</title>

<meta http-equiv="Content-type" content="text/html; charset=utf-8">

</head>

<body>

点击下面链接看看效果:

<hr>

<a href="hello.do">调用Hello模板</a>

</body>

</html>
7.把testFM项目部署到tomcate并启动服务。

8.打开浏览器,输入地址:http://localhost:8080/testFM/
9.点击调用Hello模板 链接,如果出现hello zdz!则说明模板调用成功了!

分享到:
评论

相关推荐

    freemarker简单例子

    Freemarker是一个强大的模板引擎,常用于Java web开发中,生成动态HTML或其他格式的文本输出。...学习和掌握Freemarker能够提升你在Web开发中的效率,使得页面设计和后端数据处理更加协调,同时降低维护成本。

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

    FreeMarker 是一个强大的模板引擎,常用于Java Web开发中生成动态HTML、XML或其他...这只是一个基础的起点,FreeMarker还有更多高级特性等待探索,如宏定义、自定义指令等,这些将在你进一步深入学习的过程中发挥作用。

    freeMarker例子

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

    freemarker 例子

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

    freemarker学习

    Freemarker的核心思想是将数据模型与模板结合,通过模板来呈现准备好的数据。 在开始使用Freemarker之前,你需要先下载相关的jar包。你可以访问FreeMarker的官方网站...

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

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

    freemarker入门文档及例子

    通过阅读“freemarker学习”和“freemarkerѧϰ”这两个文件,你可以深入了解Freemarker的语法和实际应用场景,逐步掌握这个强大的模板引擎。不断练习和实践,你将在不久的将来成为一名熟练的Freemarker开发者,能够...

    freemarker学习资料

    在这个例子中,`${user}`和`${latestProduct.url}`、`${latestProduct.name}`是FreeMarker指令,它们将在运行时被数据模型中的实际值替换。数据模型可以包含各种对象,如字符串、数字、日期、布尔值以及更复杂的数据...

    FreeMarker学习资料

    ### FreeMarker 学习资料详解 #### 一、FreeMarker 模板文件构成 FreeMarker 是一种用于生成动态文档的工具,它通过结合固定的文本、注释、变量(插值)以及指令(FTL标签)来创建动态内容。具体而言,FreeMarker ...

    freemarker 与sitemesh 整合例子

    这些文件可以作为学习和实践Freemarker与Sitemesh整合的起点,帮助开发者理解如何在实际项目中应用这两种技术。 通过这样的整合,开发者可以利用Freemarker的强大模板语言处理动态内容,同时借助Sitemesh保持页面的...

    ssh+FreeMarker静态化网页例子

    ssh+FreeMarker静态化网页例子

    利用freemarker导出word 小例子方便新手学习

    在这个"利用FreeMarker导出Word小例子"中,我们将探讨如何使用FreeMarker来创建Word文档,这对于新手来说是一次很好的学习机会。 1. **FreeMarker基础知识**: - FreeMarker是一个基于模板的生成器,主要用在Web...

    freemarker代码

    - 学习Freemarker的模板继承和导入,这有助于代码复用和组织。 - 理解Freemarker的内置指令和函数,如`&lt;#list&gt;`、`&lt;#escape&gt;`等,这些工具可以帮助你编写更复杂的模板。 - 探索Freemarker的高级特性,如宏和自定义...

    freeMarker学习入门

    FreeMarker 是一个强大的模板引擎,主要用于生成HTML或其他类型的文本输出,尤其在Web开发中被...通过学习FreeMarker,开发者可以更好地实现MVC架构中的视图层,提高开发效率,并创建出更加灵活、可维护的Web应用程序。

    struts2+freemarker学习案例

    Struts2和FreeMarker是...通过这个例子,你可以深入了解Struts2如何调用Action,以及Action如何与FreeMarker协同工作,形成完整的请求处理流程。同时,这也是一个很好的实践机会,帮助你掌握这两种技术的集成和使用。

    实用方便freemarker.jar freemarker架包 freemarker生成excel、word、html、xml例子

    FreeMarker是一个强大的模板引擎,主要用于生成动态HTML、XML、Word、Excel等格式的文档。它在Java环境中广泛使用,...通过学习和熟练掌握FreeMarker,你可以更高效地实现数据和视图的分离,提升开发效率和代码质量。

Global site tag (gtag.js) - Google Analytics