`

FreeMarker 小例子

阅读更多

转载请注明:来自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工程,在类路径下加入FreeMarkerjar文件:freemarker.jar

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

2.     编写beanBook,代码如下:

 

  1. package com.zyg.fm.bean;  
  2.   
  3. import java.util.Date;  
  4.   
  5. public class Book {  
  6.     private String bookId;  
  7.     private String bookName;  
  8.     private String author;  
  9.     private Double price;  
  10.     private Date publishDate;  
  11.     public String getBookId() {  
  12.         return bookId;  
  13.     }  
  14.     public void setBookId(String bookId) {  
  15.         this.bookId = bookId;  
  16.     }  
  17.     public String getBookName() {  
  18.         return bookName;  
  19.     }  
  20.     public void setBookName(String bookName) {  
  21.         this.bookName = bookName;  
  22.     }  
  23.     public String getAuthor() {  
  24.         return author;  
  25.     }  
  26.     public void setAuthor(String author) {  
  27.         this.author = author;  
  28.     }  
  29.     public Double getPrice() {  
  30.         return price;  
  31.     }  
  32.     public void setPrice(Double price) {  
  33.         this.price = price;  
  34.     }  
  35.     public Date getPublishDate() {  
  36.         return publishDate;  
  37.     }  
  38.     public void setPublishDate(Date publishDate) {  
  39.         this.publishDate = publishDate;  
  40.     }  
  41. }  

 

3.     编写servlet,代码如下:

 

  1. package com.zyg.fm.servlet;  
  2.   
  3. import java.util.*;  
  4. import java.io.*;  
  5. import javax.servlet.*;  
  6. import javax.servlet.http.*;  
  7.   
  8. import com.zyg.fm.bean.Book;  
  9.   
  10. import freemarker.template.*;  
  11.   
  12. /** 
  13.  * @author 张燕广 
  14.  */  
  15. public class BookServlet extends HttpServlet  
  16. {  
  17.     private Configuration cfg;   
  18.       
  19.     public void init()   
  20.     {  
  21.         //初始化FreeMarker配置  
  22.         //创建一个Configuration实例  
  23.         cfg = new Configuration();  
  24.         //设置FreeMarker模版文件的位置  
  25.         cfg.setServletContextForTemplateLoading(getServletContext(), "WEB-INF/templates");  
  26.     }  
  27.       
  28.     public void service(HttpServletRequest request, HttpServletResponse response)  
  29.         throws ServletException, IOException  
  30.     {          
  31.         //获取数据  
  32.         List<Book> bookList = getBookList();  
  33.           
  34.         Map map = new HashMap();  
  35.         map.put("bookList", bookList);    
  36.         map.put("message","您好,张燕广");  
  37.         //取得模版文件  
  38.         Template t = cfg.getTemplate("bookList.ftl");    
  39.           
  40.         // 开始准备生成输出  
  41.         // 使用模版文件的charset作为本页面的charset  
  42.         System.out.println(t.getEncoding());  
  43.         response.setContentType("text/html; charset="+t.getEncoding());  
  44.         Writer out = response.getWriter();  
  45.           
  46.         //合并数据模型和模版,并将结果输出到out中  
  47.         try  
  48.         {  
  49.             t.process(map, out);  
  50.         }   
  51.         catch (TemplateException e)  
  52.         {  
  53.             throw new ServletException("emplate模版中出现错误!", e);  
  54.         }  
  55.     }  
  56.       
  57.     /** 
  58.      * 模拟从数据库获取数据的操作 
  59.      * @return 
  60.      */  
  61.     private List<Book> getBookList(){  
  62.         List<Book> bookList = new ArrayList<Book>();  
  63.         Book book = null;  
  64.         for(int i=0;i<10;i++){  
  65.             book = new Book();  
  66.             book.setBookId(String.valueOf(i+1));  
  67.             book.setBookName("FreeMarker学习之"+(i+1));  
  68.             book.setAuthor("changong"+(i+1));  
  69.             book.setPrice(new Double(100/(i+1)));  
  70.             book.setPublishDate(new Date());  
  71.             bookList.add(book);  
  72.         }  
  73.         return bookList;  
  74.     }  
  75. }  

 

 

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

 

  1. <html>  
  2. <head>  
  3.   <title>书籍列表</title>  
  4. </head>  
  5. <body>  
  6.   <center>  
  7.       <font color="blue">  
  8.         ${message}! 这是FreeMarker学习小例子!!! <br>  
  9.       <hr>  
  10.       <h1>      
  11.         书籍列表  
  12.       </h1>  
  13.       </font>  
  14.   </center>  
  15.   <table border="1" width="100%" align="center">  
  16.   <tr align="center">  
  17.     <td>书号</td>  
  18.     <td>书名</td>  
  19.     <td>作者</td>  
  20.     <td>价格</td>  
  21.     <td>出版日期</td>  
  22.   </tr>  
  23.   <#list bookList as book>  
  24.   <#if book_index%2==0>  
  25.     <tr style="color:red" mce_style="color:red" align="center" id="tr_${book_index}">  
  26.   <#else>  
  27.     <tr style="color:blue" mce_style="color:blue" align="center" id="tr_${book_index}">  
  28.   </#if>  
  29.     <td>${book.bookId}</td>  
  30.     <td>${book.bookName}</td>  
  31.     <td>${book.author}</td>  
  32.     <td>${book.price?string.currency}</td>  
  33.     <td>${book.publishDate?string("yyyy年MM月dd日")}</td>  
  34.    </tr>  
  35.   </#list>  
  36.   </table>  
  37. </body>  
  38. </html>   

 

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

 

 

  1. <?xml version="1.0" encoding="ISO-8859-1"?>  
  2.   
  3. <!DOCTYPE web-app  
  4.     PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  
  5.     "http://java.sun.com/dtd/web-app_2_3.dtd">  
  6.   
  7. <web-app>  
  8.     <servlet>  
  9.         <servlet-name>book</servlet-name>  
  10.         <servlet-class>com.zyg.fm.servlet.BookServlet</servlet-class>  
  11.     </servlet>  
  12.     <servlet-mapping>  
  13.         <servlet-name>book</servlet-name>  
  14.         <url-pattern>/book</url-pattern>  
  15.     </servlet-mapping>  
  16.     <welcome-file-list>  
  17.         <welcome-file>index.jsp</welcome-file>  
  18.     </welcome-file-list>  
  19. </web-app>  

 

 

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

效果如下图所示:

 

分享到:
评论

相关推荐

    struts2.0+freemarker小例子

    里边内容很少,只是希望让没接触过的人...这样在看有关freemarker相关资料时不会那么茫然. 下了例子,最好在下个freemarker插件 http://freemarker.sourceforge.net/eclipse.html&lt;br&gt;这是插件地址,有安装说明

    freemarker简单例子

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

    freemarker学习例子

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

    spring mvc freemarker 简单例子

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

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

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

    freeMarker例子

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

    freemarker使用例子.txt

    ### Freemarker 使用例子详解 #### 一、Hashes(散列)操作 在Freemarker模板语言中,散列(Hashes)是一种非常常见的数据结构,它可以用来存储键值对。这种数据结构非常适合用于需要根据特定键来快速查找或更新值...

    freemarker 例子

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

    freemarker入门文档及例子

    提供的两个小实例将帮助读者更好地理解Freemarker的实际应用: 1. 用户列表展示:一个简单的例子,展示如何使用Freemarker遍历用户列表并显示用户信息,如用户名、邮箱等。 2. 动态生成邮件:另一个实例可能是创建一...

    Spring 3 mvc + Freemarker 框架例子

    在本例子中,我们将深入探讨如何将Spring MVC与Freemarker模板引擎结合使用。 Freemarker是一个开源的模板引擎,用于生成动态HTML、XML或其他格式的文本。它不依赖任何Web容器,仅需要一个解析器来处理模板文件。...

    freeMarker生成html实用例子

    这个"freeMarker生成html实用例子"很可能是提供了一些实际应用FreeMarker模板语言来生成HTML页面的示例代码。下面我们将深入探讨FreeMarker的核心概念、如何使用它以及其在生成HTML中的优势。 1. **FreeMarker核心...

    freemarker 与sitemesh 整合例子

    Freemarker和Sitemesh是两个在Web开发中常用的开源技术。Freemarker是一个模板引擎,主要用于生成动态HTML或其他文本格式的输出,而Sitemesh则是一个页面布局和装饰框架,用于统一网站的外观和感觉。这两者的整合...

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

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

    freemarker模板生成例子

    freemarker模板生成例子 可以根据表名生成其增删改查方法以及jsp页面,基于spirng,spring-mvc,mybatis .使用前请更改jdbc配置文件下的项目路径和数据库,生成后需要将controller上方注释复制到mybatisconfig中对应...

    struts1+spring+hibernate+freemarker一个小例子

    在这个“struts1+spring+hibernate+freemarker一个小例子”中,我们将探讨这四个组件如何协同工作,以及它们各自的核心功能。 首先,Struts1是MVC(模型-视图-控制器)设计模式的一个实现,主要用于处理HTTP请求和...

    Java用freemarker导出word例子

    在我们的例子中,`fctestpaper.ftl`就是这样一个模板文件,它包含了生成Word文档所需的结构和占位符。 在Java中,我们需要以下步骤来使用`Freemarker`导出Word: 1. **配置Freemarker**: 首先,你需要添加`...

    Java freemarker demo 【struts + freemarker】 自己修改的一个小例子

    在这个“Java FreeMarker demo 【Struts + FreeMarker】”示例中,我们将会探索如何将FreeMarker与Struts框架结合,以实现MVC(Model-View-Controller)架构中的视图层功能。 Struts是一个基于MVC设计模式的Java ...

    spring整合freemarker发送邮件例子

    对于Freemarker,需要在`pom.xml`文件中添加Freemarker和JavaMail的相关依赖: ```xml &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;spring-boot-starter-mail &lt;groupId&gt;org.springframework.boot ...

Global site tag (gtag.js) - Google Analytics