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

时间:2022-04-11 03:20:46


1.新建Dynamic web project工程。

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

2.起名为Freemarker

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

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

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

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

4.index.html中添加如下内容:

<!DOCTYPEhtml>

<html>

<head>

<metacharset="UTF-8">

<title>Insert title here</title>

</head>

<body>

点击下面链接看看效果:

<hr>

<ahref="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 = newHashMap();

     //放入对应数据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) {

        thrownew ServletException("处理Template模版中出现错误", e);

     }

14.配置web.xml

<web-appversion="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>