`
eric_hwp
  • 浏览: 125838 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

freemaker

 
阅读更多

FreeMaker第一步
转载请注明:来自http://blog.csdn.net/M_ChangGong/ 作者:张燕广



FreeMarker是什么?

FreeMarker是一个”模板引擎”,是一个基于模板技术的生成文本输出的一个通用工具,是一个JAVA的包,是一个JAVA程序员可以使用的类库。

FreeMarker不是什么?

FreeMarker不是一个对最终用户的应用程序.,不是一个WEB应用程序框架.。

FreeMarker能做什么?

FreeMarker是设计为可以生成WEB PAGES.它是基于SERVLET遵循MVC模式的致力于降低、分离网页设计人员和程序员的耦合。

作为WEB应用框架的一个组件,FREEMARKER引擎本身并不了解HTTP或者SERVLETS,它只不过是利用模板加上数据生成文本页面而已,也可以在FreeMarker模板中使用JSP标签。

下面编写一个简单的FreeMarker例子。

1.     创建一个web工程,在类路径下加入FreeMarker的jar文件:freemarker.jar。

   Freemarker下载地址为:http://www.freemarker.org/index.html

2.     编写bean类Book,代码如下:


view plain
package com.zyg.fm.bean; 
 
import java.util.Date; 
 
public class Book { 
    private String bookId; 
    private String bookName; 
    private String author; 
    private Double price; 
    private Date publishDate; 
    public String getBookId() { 
        return bookId; 
    } 
    public void setBookId(String bookId) { 
        this.bookId = bookId; 
    } 
    public String getBookName() { 
        return bookName; 
    } 
    public void setBookName(String bookName) { 
        this.bookName = bookName; 
    } 
    public String getAuthor() { 
        return author; 
    } 
    public void setAuthor(String author) { 
        this.author = author; 
    } 
    public Double getPrice() { 
        return price; 
    } 
    public void setPrice(Double price) { 
        this.price = price; 
    } 
    public Date getPublishDate() { 
        return publishDate; 
    } 
    public void setPublishDate(Date publishDate) { 
        this.publishDate = publishDate; 
    } 


3.     编写servlet,代码如下:


view plain
package com.zyg.fm.servlet; 
 
import java.util.*; 
import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
 
import com.zyg.fm.bean.Book; 
 
import freemarker.template.*; 
 
/**
* @author 张燕广
*/ 
public class BookServlet extends HttpServlet 

    private Configuration cfg;  
     
    public void init()  
    { 
        //初始化FreeMarker配置 
        //创建一个Configuration实例 
        cfg = new Configuration(); 
        //设置FreeMarker模版文件的位置 
        cfg.setServletContextForTemplateLoading(getServletContext(), "WEB-INF/templates"); 
    } 
     
    public void service(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException 
    {         
        //获取数据 
        List<Book> bookList = getBookList(); 
         
        Map map = new HashMap(); 
        map.put("bookList", bookList);   
        map.put("message","您好,张燕广"); 
        //取得模版文件 
        Template t = cfg.getTemplate("bookList.ftl");   
         
        // 开始准备生成输出 
        // 使用模版文件的charset作为本页面的charset 
        System.out.println(t.getEncoding()); 
        response.setContentType("text/html; charset="+t.getEncoding()); 
        Writer out = response.getWriter(); 
         
        //合并数据模型和模版,并将结果输出到out中 
        try 
        { 
            t.process(map, out); 
        }  
        catch (TemplateException e) 
        { 
            throw new ServletException("emplate模版中出现错误!", e); 
        } 
    } 
     
    /**
     * 模拟从数据库获取数据的操作
     * @return
     */ 
    private List<Book> getBookList(){ 
        List<Book> bookList = new ArrayList<Book>(); 
        Book book = null; 
        for(int i=0;i<10;i++){ 
            book = new Book(); 
            book.setBookId(String.valueOf(i+1)); 
            book.setBookName("FreeMarker学习之"+(i+1)); 
            book.setAuthor("changong"+(i+1)); 
            book.setPrice(new Double(100/(i+1))); 
            book.setPublishDate(new Date()); 
            bookList.add(book); 
        } 
        return bookList; 
    } 




4.在WEB-INF下创建存放FreeMarker文件的目录:templates,在该目录下载FreeMarker模板文件:bookList.ftl,其代码如下:


view plain
<html> 
<head> 
  <title>书籍列表</title> 
</head> 
<body> 
  <center> 
      <font color="blue"> 
        ${message}! 这是FreeMarker学习小例子!!! <br> 
      <hr> 
      <h1>     
        书籍列表 
      </h1> 
      </font> 
  </center> 
  <table border="1" width="100%" align="center"> 
  <tr align="center"> 
    <td>书号</td> 
    <td>书名</td> 
    <td>作者</td> 
    <td>价格</td> 
    <td>出版日期</td> 
  </tr> 
  <#list bookList as book> 
  <#if book_index%2==0> 
    <tr style="color:red" mce_style="color:red" align="center" id="tr_${book_index}"> 
  <#else> 
    <tr style="color:blue" mce_style="color:blue" align="center" id="tr_${book_index}"> 
  </#if> 
    <td>${book.bookId}</td> 
    <td>${book.bookName}</td> 
    <td>${book.author}</td> 
    <td>${book.price?string.currency}</td> 
    <td>${book.publishDate?string("yyyy年MM月dd日")}</td> 
   </tr> 
  </#list> 
  </table> 
</body> 
</html>  

5.修改web.xml文件,修改后的配置代码如下:



view plain
<?xml version="1.0" encoding="ISO-8859-1"?> 
 
<!DOCTYPE web-app 
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
    "http://java.sun.com/dtd/web-app_2_3.dtd"> 
 
<web-app> 
    <servlet> 
        <servlet-name>book</servlet-name> 
        <servlet-class>com.zyg.fm.servlet.BookServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
        <servlet-name>book</servlet-name> 
        <url-pattern>/book</url-pattern> 
    </servlet-mapping> 
    <welcome-file-list> 
        <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 


6.访问示例代码,在浏览器地址栏输入http://localhost:8080/fmq/book(fmq为配置的项目虚拟路径)

效果如下图所示:



 

分享到:
评论
1 楼 yufa11 2011-12-13  

相关推荐

    java代码生成器(Freemaker)

    在这个场景中,我们关注的是一个基于FreeMarker(Freemaker)的Java代码生成器。FreeMarker是一个强大的、轻量级的模板引擎,主要用于生成动态Web内容,但在Java世界里,它也被广泛用于生成源代码、配置文件等静态...

    freemaker简单小例子+ECharts例子

    在本示例中,“freemaker简单小例子”可能是指如何在Freemarker模板中插入动态数据并渲染成页面。基本流程包括以下几个步骤: 1. **创建Freemarker模板**:在`.ftl`文件中,你可以定义HTML结构,并使用`${...}`或`...

    Freemaker_入门+深入+开发指南+学习笔记

    ### Freemaker 入门与深入知识点详解 #### 一、Freemaker简介 Freemaker是一款功能强大的模板引擎,常用于Web应用程序中的动态页面生成。相比于其他模板引擎如Velocity,Freemaker支持更为灵活的过程调用、递归处理...

    freemaker代码生成工具

    在给定的场景中,`freemaker` 被用来自动化生成常见的Java开发中的各种组件,如`javabean`、`action`、`service`、`dao`以及`struts2`和`spring`的配置文件。这一过程极大地提高了开发效率,减少了重复劳动。 1. ...

    IDEA+MAVEN+springMVC+mybatis+mySQL+freemaker

    【标题】"IDEA+MAVEN+springMVC+mybatis+mySQL+freemaker" 涵盖了现代Web开发中的多个核心组件,这些组件共同构建了一个完整的Java Web应用程序框架。IDEA是IntelliJ IDEA,一个强大的集成开发环境,提供丰富的功能...

    freemaker开发注意.txt

    在使用freemaker进行开发时,走了很多弯路,这个是最后终于成功后进行的总结,保留一份,并共享给大家

    freemaker导出多个word格式doc压缩文件.rar

    FreeMaker是一款强大的模板引擎,常用于Java环境中动态生成各种类型的文本文件,如HTML、XML、CSV,当然也包括Microsoft Word的DOC格式。本教程将详细讲解如何使用FreeMarker来生成单个及多个Word文档,并将其压缩...

    freemaker插件 2.3.18

    这个"freemaker插件 2.3.18"指的是针对FreeMarker库的一个特定版本2.3.18的插件。这个插件旨在为开发者提供更好的支持和集成环境,使他们能够更高效地利用FreeMarker模板语言来编写和调试模板。 FreeMarker的核心...

    freemaker 简单实现

    在"freemaker简单实现"的项目中,你可能包含以下步骤: 1. **引入依赖**:在你的Maven或Gradle项目中,添加FreeMarker的依赖库。例如,在Maven的pom.xml文件中添加: ```xml &lt;groupId&gt;org.freemarker ...

    freemaker导出word的doc_docx_带动态图片及word转pdf工具类_jar_万能整理汇总.rar

    本资源“freemaker导出word的doc_docx_带动态图片及word转pdf工具类_jar_万能整理汇总.rar”显然是一个集合了多种功能的压缩包,旨在帮助开发者高效地使用Freemarker来处理复杂的Word文档生成任务,并且包含了将Word...

    springboot+freemaker+mybatis框架整合的后台管理系统

    springboot+freemaker+mybatis框架整合的案件后台管理系统,包含案件的excel批量添加,案件跟踪修改,案件每日和每月统计,权限管理(自定义角色)等; 相关技术关键字:springboot freemaker quartz mybatis mysql ...

    structs2 + spring2 + hibernate3 +freemaker + Ajax

    structs2 + spring2 + hibernate3 +freemaker + Ajax 其中包括Jquery+Ajax等最新技术 实现的完整项目实例,从中可以学得很多技术知识,只此一家别 无二家. 想学好java_Web开发的就赶紧下载吧 (己包含了数据库的文件,...

    Freemaker导出word亲测可用

    在本案例中,我们关注的是如何使用Freemaker来导出Word文档。这个"Freemaker导出word亲测可用"的项目,显然是一个实际应用的示例,它提供了便捷的方法来生成Word文档,无需复杂的操作。 Freemaker的核心理念是将...

    freemaker-2.3.19

    freemaker作为模板引擎,相当强大,当前的最新版了

    FreeMaker IDE

    FreeMaker IDE是一款专为FreeMarker模板语言设计的集成开发环境(IDE)。FreeMarker是一个开源的、基于Java的模板引擎,常用于Web应用开发,能够与Servlets或JavaServer Pages(JSP)配合工作,用于生成动态内容。它...

    freemaker软件和freemaker中文文档

    FreeMarker是一款强大的、开源的模板引擎,主要用于生成动态HTML、XML或其他格式的文本输出,尤其在Web应用开发中被广泛使用。它与Java语言紧密集成,但模板设计者无需了解Java,只需关注数据和如何展示数据。...

    Freemaker经典_入门开发指南

    ### Freemaker经典_入门开发指南 #### Freemaker简介与特性 Freemaker是一个强大的模板引擎,以其高度灵活性和扩展性著称。相比于其他模板引擎(如Velocity),Freemaker提供了更为丰富的功能,例如强大的过程调用...

    FreeMaker API CHM

    FreeMaker API CHM 文件是关于FreeMarker模板引擎的英文版API文档,它是以CHM(Microsoft Compiled HTML Help)格式编译的,这种格式通常用于存储和查看离线帮助文档。FreeMarker是一个开源的Java库,它允许开发者用...

Global site tag (gtag.js) - Google Analytics