1、所需的材料:

主料:

myeclipse(我用的版本是10.0,各种版本可能略有不同,但是大都大同小异)

主辅料:

Freemarker-2.3.8.jarurlrewrite-2.6.0.jar

副辅料:

freemarker-ide-0.9.14

功效:myeclipse是我们快速搭建web项目的根本,离开了它我们寸步难行。仅仅是难行,不是不行。Freemarkerjar包是动态网页静态化的必备jar包,静态化的工作基本上都是由他来完成的,如果没有他,你就不用往下看了,打魔兽去吧。Urlrewritejar包是用来解决将动态的网页静态化之后的传参问题的。freemarker-ide-0.9.14是一个eclipse的插件,实现编辑*.ftl文件的语法高亮,以及语法提示问题。方便模板的编写以及语法校验。

2、用法:

工欲善其事必先利其器。在编辑代码之前应先将工具准备好。

首先,将freemarker-ide-0.9.14解压,找出解压后的hudson.freemarker_ide_0.9.14文件夹,并将这个文件夹整个拷贝到MyEclipse的安装目录MyEclipse 10下的dropins目录下(我的myeclipse的相应目录E:\MyEclipse\MyEclipse 10\dropins),重启myeclipse就可以了。现在编辑工具已经安装好了。在myeclipse的某一个工程下建一个test.ftl文件,在文件中输入<#include “C:\\windows”>如果不是黑白的就说明插件已经装好了哈。

myeclipse中新建一个WebProject名字叫HelloStaticTest。在该工程的根目录的src文件夹下新建一个包,报名叫“org.cfs.freemarker.hello”。在该包下新建一个servlet,名字叫做HelloServlet.java

WebRoot目录下的WEB-INF目录下的lib目录中添加FreeMarker的官方jar包。如:freemarker-2.3.8.jar。如果没有可以去官网下载(http://freemarker.sourceforge.net/)。到了官网该怎么下载大家都懂的。这个东西是完全免费的,所以不用有任何的担心与不安。添加了FreeMarker的官方jar包后,myeclipse会自动将其引入buildpath,这样就不用再手动引入了,有工具就是省事。

WEB-INF目录下新建一个文件,文件名字叫hello.ftl。内容如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
</head>
<body>
Hello , ${hello}<br/>
</body>
</html>

src目录下的org.cfs.freemarker.hello这个包中的HelloServlet.java文件如下编辑:


package org.cfs.freemarker.hello;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

publicclassHelloServletextends HttpServlet {
publicvoiddoGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException {
doPost(request,response);
}
publicvoiddoPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException {
//配置
Configurationcfg = newConfiguration();
// 在哪个文件夹下找ftl模板文件,一般在WebRoot目录下的WEB-INF文件夹中
cfg.setServletContextForTemplateLoading(getServletContext(),"/WEB-INF");
//设置字符集编码
cfg.setEncoding(Locale.getDefault(),"UTF-8");
//以utf-8字符集的形式,取出模板文件
Templatet = cfg.getTemplate("hello.ftl","UTF-8");
//用HashMap作为传递数据的媒介,将servlet中的数据填充到模板中去
Map<String,Object> data = new HashMap<String, Object>();
//用数据填充HashMap
data.put("hello","World!");
//取得web项目的根目录
Stringpath = getServletContext().getRealPath("");
//在根目录下新建一个静态网页的文件
Filefile = newFile(path+"/Hello.html");
if(!file.exists()){
file.createNewFile();
}
//取得该文件的输出流
FileOutputStreamfos = newFileOutputStream(file);
try {
//用HashMap中的数据填充模板,并将填充过数据的模板写到文件中
t.process(data,newOutputStreamWriter(fos));
}catch(TemplateException e) {
e.printStackTrace();
}finally{
//关闭文件读写流
fos.flush();
fos.close();
}
//重定向到静态的html文件中去
response.sendRedirect("Hello.html");
}
}


将该工程部署到服务器(我用的是Tomcat 6.0)上去。然后,打开浏览器在地址栏,输入http://localhost:8080/HelloStaticTest/hello访问。