一、        FreeMarker的介绍

(一)            为什么要使用FreeMarker

比如下面页面,栏目太多,每次去数据库读取,太慢了。当然也可以除了用FreeMarker来改进,也可以用其他技术

wKioL1aDoBKjIcQoAAJYKNaIq3c342.png

(二)            什么是FreeMarker

FreeMarker 是一款 模板引擎: 即一种基于模板和改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。

wKiom1aDn_WTEyEnAAAwNZsi1CQ840.png

二、        HelloWorld项目

(一)            FreeMarker插件的安装

1.        离线安装

MyEclipce10.0中安装FreeMarker插件,这绝对是最简单的方法。步骤如下:

(一)打开http://sourceforge.net/projects/freemarker-ide/files/ 下载最新版本,目前本人下载时最新版本是:freemarker-ide-0.9.14

(二)将其解压,将hudson.freemarker_ide_0.9.14文件夹放入MyEclipse安装目录dropins(例:D:\Program Files\MyEclipse10.0\MyEclipse 10\dropins目录下)

(三)然后重新启动MyEclipse10.0 会自动提示安装该插件。

(四)如果安装成功,则在 window --> Preferences 左边的树形栏里出现FreeMarker Editor一项新的内容

(五)在General --> Editors --> File Associations下设置*.ftl打开方式为:Freemarker Editor Default ,点击OK

(六)如果一切顺利,打开.ftl文件,代码会高亮,还有自动提示哦!

2.        在线安装

MyEclipse10help菜单中进入config center。然后在software点击 add Site:地址输入:http://download.jboss.org/jbosstools/updates/development/indigo/

名称就写jboss

之后便在左侧出现了jboss,选择FreeMarker IDE,右键“Add to profile

点击在新窗口中浏览此图片

然后 Pending changes会说有一个东西需要应用的,点击Apply,按照提示安装,重启MyEclipse即可。

(二)            下载jar

地址:http://freemarker.incubator.apache.org/

(三)            新建项目

1.        新建java项目,并添加jar

wKiom1aDn_bgS2SkAAA0mXF05f4996.png

 2、FreemarkerUtil.java

/** * FreeMarker工具 * 	读取其模板 *  并输入数据 * @author wangsh * */public class FreemarkerUtil {public Template getTemplate(String name) {  try { //使用freeMarker的版本 Version version = new Version("2.3.23"); //通过Freemaker的Configuration读取相应的ftl Configuration cfg = new Configuration(version); //设定去哪里读取相应的ftl模板文件 cfg.setClassForTemplateLoading(this.getClass(),"/ftl"); //在模板文件目录中找到名称为name的文件 Template temp = cfg.getTemplate(name); return temp;  } catch (IOException e) { e.printStackTrace();  }  return null;	   }	   /*** 输出到控制台* @param name* @param root*/	   public void print(String name,Map<String,Object> root) {  try { //通过Template可以将模板文件输出到相应的流 Template temp = this.getTemplate(name); temp.process(root, new PrintWriter(System.out));  } catch (TemplateException e) { e.printStackTrace();  } catch (IOException e) { e.printStackTrace();  }	   }	   /*** 输出html文件* @param name:模板名称* @param root:数据模型* @param outFile:输出文件名称*/	   public void fprint(String name,Map<String,Object> root,String outFile) {  FileWriter out = null;  try { //通过一个文件输出流,就可以写到相应的文件中 out = new FileWriter(new File("E:\\360yunpan\\workspace\\learn\\learning-freemarker\\html\\"+outFile)); Template temp = this.getTemplate(name); temp.process(root, out);  } catch (IOException e) { e.printStackTrace();  } catch (TemplateException e) { e.printStackTrace();  } finally { try {if(out!=null) out.close(); } catch (IOException e) {e.printStackTrace(); }  }	   }}

3.        输出到控制台

1)       模板

1.        你好 ${username}

2)       测试:

1.        /**

2.            * 输出到控制台

3.            */

4.           @Test

5.           public void helloworld(){

6.              //创建数据模型

7.              Map<String, Object> root = new HashMap<String,Object>();

8.              //为数据模型添加值

9.              root.put("username", "孙悟空");

10.           //将数据模型和模板组合,将输出到控制台

11.           fu.print("helloworld.ftl", root);

12.        }

4.        输出到文件

1)       模板

1.        <!DOCTYPE html>

2.        <html>

3.          <head>

4.            <title>01.html</title>

5.            <meta name="content-type" content="text/html; charset=UTF-8">

6.        

 

7.          </head>

8.        

 

9.          <body>

10.         <h1>${username}</h1> <br>

11.       </body>

12.     </html>

2)       测试

1.        /**

2.            * 输出到html文件

3.            */

4.           @Test

5.           public void test01(){

6.              //创建数据模型

7.              Map<String, Object> root = new HashMap<String,Object>();

8.              //为数据模型添加值

9.              root.put("username", "孙悟空");

10.           //将数据模型和模板组合,将输出到控制台

11.           fu.print("helloworld.ftl", root);

12.           fu.fprint("01.ftl", root, "01.html");

13.        }

代码下载http://code.taobao.org/svn/learning-freemarker/

 

关注我们

    师享空间的宗旨是分享知识,传播价值。关注我们,及时获得更多信息。

wKioL1aDoBOzPFCHAACHq5DKK3A038.png

 

 

捐赠我们
    如果您对我们的成果表示认同并且觉得对你有所帮助,欢迎您对我们捐赠^_^

    wKiom1aDn_fgHUZrAAB9wjaIS_E535.jpg