首先用freemarker要用到freemarker jar包。我这边是用简单的servlet做的一个简单的例子,静态化页面的类型是html。
用freemarker要用到ftl文件,这个文件是页面静态化的模板,就是<html>标签写好,你带入的数据直接填进去
equipment.ftl文件如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<title>武汉亿童网|亿童幼儿教育|幼儿学前教育装备|区域活动|玩教具|幼教装备</title>
</head>
<body>
名字:<span>${name}</span></br>
自我介绍:<span>${desc}</span></br>
年龄:<span>${age}</span></br>
</body>
</html>
TestFreemarker.java文件如下:
package freemarker;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import freemarker.template.Configuration;
import freemarker.template.Template;
public class TestFreemarker extends HttpServlet{
@Override
public void service(HttpServletRequest request, HttpServletResponse response){
Writer out = null;
Map<String,Object> map = new HashMap<String, Object>();//map是你要带入到ftl文件的数据
map.put("name", "zhang");
map.put("desc", "nihao");
map.put("age", 23);
ServletContext context = request.getServletContext();
String path = context.getRealPath(File.separator);
//我这定义的静态页面类型是html,当然可以是其他类型
String savePath = path+File.separator+"public"+File.separator+"1.html";
Configuration cfg = new Configuration();//模板的配置
//设置加载路径,第一个参数是serlvet上下文,第二个参数是ftl文件所在文件夹
cfg.setServletContextForTemplateLoading(context,"modal");
cfg.setDefaultEncoding("UTF-8");
try {
Template template = cfg.getTemplate("equipment.ftl");//equipment就是ftl文件的名字
template.setEncoding("UTF-8");
File file= new File(savePath);//确定静态的页面生成的文件路径
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF-8"));
template.process(map, out);//第一个参数是数据,第二个参数是生成文件的IO流
} catch (Exception e) {
e.printStackTrace();
}
}
}
web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<servlet>
<servlet-name>servlet2</servlet-name>
<servlet-class>freemarker.TestFreemarker</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet2</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
工程结构
现在已经写完了,直接去浏览器输入localhost:8080/test/hello 就生成了,
可以在文件夹:...\\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\test\public\1.html找到
结果:
数据已经填入进去!ok