(一)freemarker入门

本文介绍FreeMarker模板引擎的基本概念和使用方法,包括环境搭建、模板文件编写和数据模型结合的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是FreeMarker?

FreeMarker是一款模板引擎:即一种基于模板、用来生成输出文本的通用工具。它是为Java程序员提供的一个开发包,或者说是一个类库。
FreeMarker实际上是被设计用来生成HTML页面,尤其是通过实现了基于MVC(Model View Controller,模型-视图-控制器)模式的Java Servlet应用程序。使用MVC模式的动态页面的设计构思使得你可以将前端设计师(编写HTML页面的人员)从程序员中分离出来。那么,所有人各司其职,发挥其最擅长的一面。网页设计师可以改写页面的显示效果而不受程序员编译代码的影响,因为应用程序的逻辑(这里是Java程序)和页面设计(这里是FreeMarker模板)已经被分开了。页面模板代码不会受到复杂程序代码的影响。这种分离的思想即便对一个程序员和页面设计师是同一个人的项目来说也都是非常有用的,因为分离使得代码保持简洁而且易于维护。

它的大体思路图:


模板+数据模型 = 输出

首先来看一看环境的搭建,FreeMarker不是Web开发的应用程序框架。FreeMarker引擎本身并不知道HTTP协议或Java Servlet的存在。它仅仅来生成文本内容。所以在myeclipse中新建java项目就可以了。

具体步骤:

1、新建java项目

2、下载freemarker的jar包

3、引入freemarker开发jar包,通过项目的build path-->configure build path...-->Add Externals Jars加入freemarker.jar

4、编写测试程序

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.cdtax.freemarker;  
  2.   
  3. import java.io.File;  
  4. import java.io.IOException;  
  5. import java.io.OutputStreamWriter;  
  6. import java.io.Writer;  
  7. import java.util.HashMap;  
  8. import java.util.Map;  
  9.   
  10. import freemarker.template.Configuration;  
  11. import freemarker.template.DefaultObjectWrapper;  
  12. import freemarker.template.Template;  
  13.   
  14. public class Test1  
  15. {  
  16.     public static void main(String[] args) throws Exception  
  17.     {  
  18.         //Configuration实例是存储FreeMarker应用级设置的核心部分  
  19.         Configuration cfg = new Configuration();  
  20.           
  21.         // 指定模板文件从何处加载的数据源,这里设置成一个文件目录。  
  22.         File path1 = new File(System.getProperty("user.dir")+"/src/ceshi");  
  23.         cfg.setDirectoryForTemplateLoading(path1);  
  24.           
  25.         // 指定模板如何检索数据模型,这是一个高级的主题了…  
  26.         // 但先可以这么来用:  
  27.         cfg.setObjectWrapper(new DefaultObjectWrapper());  
  28.           
  29.         //获得模板  
  30.         Template temp = cfg.getTemplate("test.ftl");  
  31.           
  32.         // 创建根哈希表  
  33.         Map root = new HashMap();  
  34.           
  35.         // 在根中放入字符串"user"  
  36.         root.put("user""xiaoming");  
  37.           
  38.         // 为"latestProduct"创建哈希表  
  39.         Map latest = new HashMap();  
  40.           
  41.         // 将它添加到根哈希表中  
  42.         root.put("latestproduct", latest);  
  43.           
  44.         // 在latest中放置"url"和"name"  
  45.         latest.put("url""products/greenmouse.html");  
  46.         latest.put("name""green mouse");  
  47.           
  48.         Writer out = new OutputStreamWriter(System.out);  
  49.         // 将模板和数据模型合并 并输出  
  50.         temp.process(root, out);  
  51.         out.flush();  
  52.     }  
  53. }  

模板文件test.ftl:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <html>  
  2. <head>  
  3.     <title>welcome!</title>  
  4. </head>  
  5. <body>  
  6.     <h1>welcome ${user} !</h1>  
  7.     <p>our latest products:  
  8.     <a href="${latestproduct.url}">${latestproduct.name}</a>!  

运行的结果:

<html>
<head>
<title>welcome!</title>
</head>
<body>
<h1>welcome xiaoming !</h1>
<p>our latest products:
<a href="products/greenmouse.html">green mouse</a>!

如果将结果输出到一个文件中,如a.html,那么就成了一个页面。

总了的来说,编程分为四步:

0、前置条件:编写模板文件(.ftl文件)

1、创建Configuration实例(freemarker的核心配置对象),然后调整配置,设定模板文件存放的位置(具体的存放目录),在整个应用的生命周期中,这个工作你应该只做一次。 

2、然后获取或创建模板,在整个应用的生命周期中,这个工作你可以执行多次

3、创建数据模型,数据应该由业务层产生,有一个domain域模型(如前面ssh中的Employee类),最后转换成map类型数据。

4、将模板和数据模型合并

从上面的图中能够看出,freemarker知识主要分模板知识部分,数据模型部分,以及配置及合并等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值