1:freemarker eclipse插件安装方法:http://freemarker.org/editors.html,注意eclipse版本
2: 基本使用
<dependencies> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.9</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> </dependencies>
就依赖一个包;在resources下放一个test.ftl文件
3: 简单的java封装
BaseServlet:
public class BaseServlet extends HttpServlet {
private static final long serialVersionUID=1L;
protected FreemarkUtil freemarkUtil;
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
HttpServletResponse response=(HttpServletResponse)res;
freemarkUtil=FreemarkUtil.getInstance(response);
super.service(req, res);
}
}
FreemarkUtil.java:
public class FreemarkUtil {
private static FreemarkUtil instance;
private Configuration cfg;
private HttpServletResponse response;
private FreemarkUtil(HttpServletResponse response) {
try {
cfg=new Configuration();
String dir=Test.class.getResource("/").getPath();
System.out.println(dir);
cfg.setDirectoryForTemplateLoading(new File(dir));
cfg.setObjectWrapper(new DefaultObjectWrapper());
this.response=response;
} catch(Exception e) {
e.printStackTrace();
}
}
public static FreemarkUtil getInstance(HttpServletResponse response) {
if(instance == null) {
instance=new FreemarkUtil(response);
}
return instance;
}
public void process(Map<String, ?> data, String name) throws Exception {
Template template=cfg.getTemplate(getName(name));
Writer out=response.getWriter();
template.process(data, out);
out.flush();
}
private String getName(String name) {
if(name == null) {
return null;
}
if(name.indexOf(".ftl") > -1) {
return name;
} else {
return name + ".ftl";
}
}
}
TestServlet.java:
package com.freemark.test;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class TestServlet
*/
public class TestServlet extends BaseServlet {
private static final long serialVersionUID=1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String uri=request.getRequestURI();
if(uri.indexOf("test/") > -1) {
System.out.println("--test -- here------");
Map<String, Object> model=new HashMap<String, Object>();
model.put("test", "welcome to use freemark ljq");
try {
freemarkUtil.process(model, "test");
} catch(Exception e) {
e.printStackTrace();
}
} else {
System.out.println("error uri = " + uri);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
web.xml:
<servlet> <servlet-name>test</servlet-name> <servlet-class>com.freemark.test.TestServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>test</servlet-name> <url-pattern>/test/*</url-pattern> </servlet-mapping>