本文标签: JavaEE
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,代码如下:
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/book(fmq为配置的项目虚拟路径)
效果如下图所示:
声明: 本文由( 张飞不张,文采横飞 )原创编译,转载请保留链接: FreeMaker第一步
Linux系统与内核学习群:194051772
WP建站技术学习交流群:194062106
[e03]
2010-04-19 16:48这个例子根本跑不起来!
2011-10-14 09:43好吧
2012-02-03 00:18