HardBirch

FreeMaker第一步

时间:09-07-05 栏目:iOS移动应用开发技术 作者:张飞不张,文采横飞 评论:3 点击: 2,046 次

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,代码如下:

 

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,代码如下:

 

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,其代码如下:

 




































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

 

<!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/bookfmq为配置的项目虚拟路径)

效果如下图所示:

声明: 本文由( 张飞不张,文采横飞 )原创编译,转载请保留链接: FreeMaker第一步

FreeMaker第一步:目前有3 条留言

  1. 地板
    匿名用户:

    [e03]

    2010-04-19 16:48 [回复]
  2. 板凳
    zkelement:

    这个例子根本跑不起来!

    2011-10-14 09:43 [回复]
  3. 沙发
    vbubble:

    好吧

    2012-02-03 00:18 [回复]

发表评论


QQ群互动

Linux系统与内核学习群:194051772

WP建站技术学习交流群:194062106

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

优秀程序员,要看优秀书!

赞助商广告

友荐云推荐