Freemarker 入门示例

初步学习freemarker ,先做一个简单的HelloWord程序!

 

新建一个WEB工程,下载(我使用的是freemarker-2.3.20)freemarker并导入freemarker.jar,在WEB-INF下新建文件夹templates用于存放模版文件
在templates下新建test.ftl,这是示例模版文件。内容就是HTML内容,里面带有一个标记符,用于将来进行变量替换,内容如下:

Html代码   收藏代码
  1. <html>  
  2.   <head>  
  3.         <title>freemarker测试title>  
  4.     head>  
  5.     <body>  
  6.         <h1>${message},${name}h1>  
  7.     body>  
  8. html>  

 

新建一个Servlet,用于请求设置变量,并处理模版的输出:

Java代码   收藏代码
  1. package com.test.servlet;  
  2. import java.io.IOException;  
  3. import java.io.Writer;  
  4. import java.util.HashMap;  
  5. import java.util.Map;  
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10. import freemarker.template.Configuration;  
  11. import freemarker.template.Template;  
  12. import freemarker.template.TemplateException;  
  13. @SuppressWarnings("serial")  
  14. public class HelloFreeMarkerServlet extends HttpServlet {  
  15.     // 负责管理FreeMarker模板的Configuration实例  
  16.     private Configuration cfg = null;  
  17.     public void init() throws ServletException {  
  18.         // 创建一个FreeMarker实例  
  19.         cfg = new Configuration();  
  20.         // 指定FreeMarker模板文件的位置  
  21.         cfg.setServletContextForTemplateLoading(getServletContext(),  
  22.                 "/WEB-INF/templates");  
  23.     }  
  24.     @SuppressWarnings("unchecked")  
  25.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  26.             throws ServletException, IOException {  
  27.         // 建立数据模型  
  28.         Map root = new HashMap();  
  29.         root.put("message""hello world");  
  30.         root.put("name""java小强");  
  31.         // 获取模板文件  
  32.         Template t = cfg.getTemplate("test.ftl");  
  33.         // 使用模板文件的Charset作为本页面的charset  
  34.         // 使用text/html MIME-type  
  35.         response.setContentType("text/html; charset=" + t.getEncoding());  
  36.         Writer out = response.getWriter();  
  37.         // 合并数据模型和模板,并将结果输出到out中  
  38.         try {  
  39.             t.process(root, out); // 往模板里写数据  
  40.         } catch (TemplateException e) {  
  41.             e.printStackTrace();  
  42.         }  
  43.     }  
  44.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  45.             throws ServletException, IOException {  
  46.         doPost(request, response);  
  47.     }  
  48.     public void destroy() {  
  49.         super.destroy();  
  50.     }  
  51. }  

 

注意要在你的web.xml中配置该Servlet:

Xml代码   收藏代码
  1. xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  5.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  6.     <servlet>  
  7.         <servlet-name>helloservlet-name>  
  8.         <servlet-class>  
  9.             com.test.servlet.HelloFreeMarkerServlet  
  10.         servlet-class>  
  11.     servlet>  
  12.     <servlet-mapping>  
  13.         <servlet-name>helloservlet-name>  
  14.         <url-pattern>/hellourl-pattern>  
  15.     servlet-mapping>  
  16.     <welcome-file-list>  
  17.         <welcome-file>index.jspwelcome-file>  
  18.     welcome-file-list>  
  19. web-app>  

 

为了方便测试,访问工程直接跳转到Servlet,对主页index.jsp做一个简单修改:

Html代码   收藏代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%  
  3. String path = request.getContextPath();  
  4. String basePath = request.getScheme()+"://"+request.getServerName()  
  5. +":"+request.getServerPort()+path+"/";  
  6. %>  
  7. <html>  
  8.   <body>  
  9.     <%  
  10.     String mypath = "hello";  
  11.     response.sendRedirect(basePath + mypath);  
  12.     %>  
  13.   body>  
  14. html>  

 

部署工程到Tomcat,启动并访问http://localhost:8080/f ,这里我建立的工程名称就是 f 。

你可能感兴趣的:(freemarker)