我的漫漫程序之旅

          專注于JavaWeb開發(fā)
          隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
          數(shù)據(jù)加載中……

          FreeMarker使用小記(HelloWorld)

          FreeMarker是開源的模板框架。對于它的介紹網(wǎng)上已經(jīng)很多了。詳情可參考
          主頁:http://www.freemarker.org/

            現(xiàn)在我們就開始我們的FreeMarker版的Hello World之旅吧。

          1.去這里下載 最新的FreeMarker.我下載的是 Download freemarker-2.3.13

          2.解壓你下載的freemarker-2.3.13。

          3.新建一web工程。我是MyEclipse下做的。把freemarker-2.3.13/lib目錄下的
          所有jar文件都復(fù)制到你建的web工程的lib目錄下。

          4.在WEB-INF目錄下建一文件夾templates,然后在這個文件夾里面新建一個模板文件test.ftl
          <html>
          <head>
            
          <title>你的自定義模板</title>
          </head>
              
          <body>
                ${message}
                :
          <font color=red>${username}</font>
              
          </body>
          </html>
          5.建一個HelloServlet:
          package com;

          import java.io.IOException;
          import java.io.PrintWriter;
          import java.util.HashMap;
          import java.util.Map;

          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          import freemarker.template.Configuration;
          import freemarker.template.Template;
          import freemarker.template.TemplateException;

          @SuppressWarnings(
          "serial")
          public class HelloServlet extends HttpServlet
          {
              
          private Configuration cfg = null;

              @Override
              
          public void init() throws ServletException
              {
                  
          // FreeMarker程序入口點
                  cfg = new Configuration();
                  
          // 初始化Servlet上下文(第二參數(shù)為ServletContext的相對路徑,null代表當(dāng)前網(wǎng)站根路徑,相對路徑)
                  cfg.setServletContextForTemplateLoading(this.getServletContext(), null);
                  
          /***********************************************************************
                   * *cfg.setServletContextForTemplateLoading(this.getServletContext(),
                   * "WEB-INF"); 如果設(shè)置成WEB-INF相應(yīng)的獲模板時需要改成Template t =
                   * cfg.getTemplate("/templates/test.ftl");
                   *********************************************************************
          */
              }

              @SuppressWarnings(
          "unchecked")
              @Override
              
          protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                      
          throws ServletException, IOException
              {
                  
          // 模板文件會根據(jù)key,讀取value
                  Map root = new HashMap();
                  root.put(
          "message""您好!");
                  root.put(
          "username""編程愛好者");
                  Template t 
          = cfg.getTemplate("WEB-INF/templates/test.ftl");
                  resp.setCharacterEncoding(
          "utf-8");
                  PrintWriter out 
          = resp.getWriter();
                  
          try
                  {
                      t.process(root, out);
                  } 
          catch (TemplateException e)
                  {
                      e.printStackTrace();
                  }
              }

              @Override
              
          protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                      
          throws ServletException, IOException
              {
                  
          this.doPost(req, resp);
              }

          }
          6.web.xml中的相應(yīng)配置:
          <?xml version="1.0" encoding="UTF-8"?>
          <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation
          ="http://java.sun.com/xml/ns/javaee 
              http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
          >
              
          <servlet>
                  
          <servlet-name>testServlet</servlet-name>
                  
          <servlet-class>com.HelloServlet</servlet-class>
              
          </servlet>

              
          <servlet-mapping>
                  
          <servlet-name>testServlet</servlet-name>
                  
          <url-pattern>/hello</url-pattern>
              
          </servlet-mapping>

              
          <welcome-file-list>
                  
          <welcome-file>index.jsp</welcome-file>
              
          </welcome-file-list>
          </web-app>

          7.啟動瀏覽器訪問:http://localhost:8888/freemarker/hello
          您會看到:
          您好! :編程愛好者

          好了,你的第一個Freemarker版的HelloWorld已經(jīng)成功完成了。


          posted on 2008-06-03 15:19 々上善若水々 閱讀(7020) 評論(3)  編輯  收藏 所屬分類: opensource

          評論

          # re: FreeMarker使用小記(HelloWorld)  回復(fù)  更多評論   

          頁面什么都沒有顯示,一切按你上面做的。獲取不到test.ftl
          里面的值,請問有完整的例子嗎?發(fā)我一份email:liufei@gaorne.com 謝謝!
          2008-12-12 17:19 | freeMarker

          # re: FreeMarker使用小記(HelloWorld)  回復(fù)  更多評論   

          不好意思?。?!test.ftl 內(nèi)容寫的有問題,所以才。。我想知道怎么獲取圖片路徑,并發(fā)送,現(xiàn)在郵件里面顯示不了圖片 非常感謝
          2008-12-12 17:39 | freeMarker

          # re: FreeMarker使用小記(HelloWorld)  回復(fù)  更多評論   

          Template t = cfg.getTemplate("WEB-INF/templates/test.ftl","utf-8");后面的utf-8不能少,少了就不顯示了
          2012-02-16 11:42 | HelloWan
          主站蜘蛛池模板: 嵩明县| 卓尼县| 弥渡县| 海安县| 西青区| 城市| 阳新县| 嘉义县| 大余县| 洪湖市| 江北区| 当涂县| 福建省| 宁都县| 富锦市| 滁州市| 长治市| 宁安市| 浑源县| 吉隆县| 扶风县| 板桥市| 古浪县| 错那县| 临清市| 琼海市| 德兴市| 河东区| 徐闻县| 平定县| 双峰县| 江源县| 枣阳市| 玛多县| 宁南县| 察雅县| 科技| 翁牛特旗| 武宣县| 应城市| 沙洋县|