自己搭建freemarker环境和测试代码

时间:2022-04-02 03:20:24


1.新建Dynamic web project工程。

自己搭建freemarker环境和测试代码

2.起名为Freemarker

自己搭建freemarker环境和测试代码

3.打开工程,在WebContent中新建index.html文件。

自己搭建freemarker环境和测试代码

自己搭建freemarker环境和测试代码

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中新建包。

自己搭建freemarker环境和测试代码

6.添加包名称为:com.sln.freemarker

自己搭建freemarker环境和测试代码

7.在刚刚创建的包下创建类。

自己搭建freemarker环境和测试代码

8.添加类名称为:Hello.java

自己搭建freemarker环境和测试代码

9.Hello类中,要实现一个Servlet类,以便对Freemarker的请求进行拦截处理。

10.首先继承HttpServlet类。HttpServlet类是在servlet-api.jar中的,所以要从tomcat中引入该jar包。

11.然后复写servletinit方法。在初始化的方法中,需要初始化Freemarker模板的一些类。

私有对象Configuration类,需要引入Freemarkerjar包。

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>