1.新建Dynamic web project工程。
2.起名为Freemarker
3.打开工程,在WebContent中新建index.html文件。
4.在index.html中添加如下内容:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
点击下面链接看看效果:
<hr>
<a href="hello.do">调用Hello模板</a>
</body>
</html>
5.在Java Resource中新建包。
6.添加包名称为:com.sln.freemarker
7.在刚刚创建的包下创建类。
8.添加类名称为:Hello.java
9.在Hello类中,要实现一个Servlet类,以便对Freemarker的请求进行拦截处理。
10.首先继承HttpServlet类。HttpServlet类是在servlet-api.jar中的,所以要从tomcat中引入该jar包。
11.然后复写servlet的init方法。在初始化的方法中,需要初始化Freemarker模板的一些类。
私有对象Configuration类,需要引入Freemarker的jar包。
12.设置模板的路径
cfg.setServletContextForTemplateLoading(getServletContext(), "templates");
第二个参数设置了模板的路径。
13.之后复写doGet方法。
代码如下:
// 建立数据模型
Map root = new HashMap();
// 放入对应数据key value
root.put("user", "zdz");
// 取得模版文件
Template t = cfg.getTemplate("hello.ftl");// FreeMarker会到系统的/WebRoot/templates/目录下找hello.ftl文件
// 开始准备生成输出
// 使用模版文件的charset作为本页面的charset
// 使用text/html MIME-type
response.setContentType("text/html; charset=" + t.getEncoding());
PrintWriter out = response.getWriter();
// 合并数据模型和模版,并将结果输出到out中
try {
t.process(root, out);// 用模板来开发servlet可以只在代码里面加入动态的数据
} catch (TemplateException e) {
throw new ServletException("处理Template模版中出现错误", e);
}
14.配置web.xml
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>freemarker</servlet-name>
<servlet-class>com.sln.freemarker.Hello</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>freemarker</servlet-name>
<url-pattern>/*.do</url-pattern>
</servlet-mapping>
</web-app>