使用FreeMarker的Web Project例子

1 创建一个名为FreemarkerDemo的Web Project

 

2 删除index.jsp,新建index.html,index.html中的内容为:

 

[html] view plain copy
 
  1. <html>  
  2. <head>  
  3. <title>Hello FreeMarker Example</title>  
  4. <meta http-equiv="Content-type" content="text/html; charset=utf-8">  
  5. </head>  
  6. <body>  
  7. 点击下面链接看看效果:  
  8. <hr>  
  9. <href="hello.do">调用Hello模板</a>  
  10. </body>  
  11. </html>  

3 把web.xml中的内容为

 

[html] view plain copy
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns="http://xmlns.jcp.org/xml/ns/javaee"  
  4.     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"  
  5.     id="WebApp_ID" version="3.1">  
  6.     <display-name>FreemarkerDemo</display-name>  
  7.     <welcome-file-list>  
  8.         <welcome-file>index.html</welcome-file>  
  9.     </welcome-file-list>  
  10. </web-app>  

4 把FreemarkerDemo部署到tomcat服务器中

 

 

 

 

5 运行FreemarkerDemo程序

 

6 在浏览器中输入http://localhost:8080/FreemakerDemo

 

7 点击上图中的“调用Hello模板”,报错

 

下面要利用FreeMarker来实现这个点击事件。

1 在WebRoot下创建lib目录,将freemarker包放到lib目录下并刷新

 

2 在WebRoot下新建templates目录,在此目录下新建hello.ftl文件,其内容为

 

[html] view plain copy
 
  1. <html>  
  2.  <head>  
  3.  <title>hello</title>  
  4.  </head>  
  5.  <body>  
  6.  <h1>Hello ${user}!</h1>  
  7.  </body>  
  8. </html>  


 

3 在src下创建example包,在example包下创建Hello.Java,其内容为:

 

[java] view plain copy
 
  1. package example;  
  2.    
  3. import java.io.*;  
  4. import java.util.*;  
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.http.*;  
  7. import freemarker.template.*;  
  8.    
  9. public class Hello extends HttpServlet {  
  10.    private static final long serialVersionUID = 1L;  
  11.    private Configuration cfg;  
  12.    
  13.    public void init() {  
  14.        //初始化FreeMarker配置  
  15.        //创建一个Configuration实例  
  16.        cfg =new Configuration();  
  17.        //设置FreeMarker的模版文件位置  
  18.        cfg.setServletContextForTemplateLoading(getServletContext(),"templates");  
  19.    }  
  20.    
  21.    public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {  
  22.        //建立数据模型  
  23.        Map<String, String> map =new HashMap<String, String>();  
  24.        //放入对应数据key value  
  25.        map.put("user","Zheng");  
  26.        //取得模版文件  
  27.        Template t =cfg.getTemplate("hello.ftl");  
  28.        //开始准备生成输出  
  29.        //使用模版文件的charset作为本页面的charset  
  30.        //使用text/html MIME-type  
  31.        response.setContentType("text/html; charset=" + t.getEncoding());  
  32.        PrintWriter out = response.getWriter();  
  33.    
  34.        //合并数据模型和模版,并将结果输出到out中  
  35.        try {  
  36.            t.process(map,out);//用模板来开发servlet可以只在代码里面加入动态的数据  
  37.        } catch(TemplateException e) {  
  38.            throw new ServletException("处理Template模版中出现错误", e);  
  39.        }  
  40.    }  
  41. }  


4 在web.xml中添加内容,添加完之后的全部内容为

 

[html] view plain copy
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns="http://xmlns.jcp.org/xml/ns/javaee"  
  4.     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"  
  5.     id="WebApp_ID" version="3.1">  
  6.       
  7.     <display-name>FreemarkerDemo</display-name>  
  8.       
  9.     <welcome-file-list>  
  10.         <welcome-file>index.html</welcome-file>  
  11.     </welcome-file-list>  
  12.   
  13.     <servlet>  
  14.         <servlet-name>Hello</servlet-name>  
  15.         <servlet-class>example.Hello</servlet-class>  
  16.     </servlet>  
  17.   
  18.     <servlet-mapping>  
  19.         <servlet-name>Hello</servlet-name>  
  20.         <url-pattern>*.do</url-pattern>  
  21.     </servlet-mapping>  
  22.       
  23. </web-app>  


5 重新运行项目,并且在浏览器中输入http://localhost:8080/FreemakerDemo

 

点击“调用Hello模板”超链接,跳转到另一个界面

 

原文地址:https://www.cnblogs.com/grimm/p/6732640.html