我的漫漫程序之旅

          專注于JavaWeb開發
          隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
          數據加載中……

          FreeMarker使用小記(HelloWorld)

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

            現在我們就開始我們的FreeMarker版的Hello World之旅吧。

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

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

          3.新建一web工程。我是MyEclipse下做的。把freemarker-2.3.13/lib目錄下的
          所有jar文件都復制到你建的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上下文(第二參數為ServletContext的相對路徑,null代表當前網站根路徑,相對路徑)
                  cfg.setServletContextForTemplateLoading(this.getServletContext(), null);
                  
          /***********************************************************************
                   * *cfg.setServletContextForTemplateLoading(this.getServletContext(),
                   * "WEB-INF"); 如果設置成WEB-INF相應的獲模板時需要改成Template t =
                   * cfg.getTemplate("/templates/test.ftl");
                   *********************************************************************
          */
              }

              @SuppressWarnings(
          "unchecked")
              @Override
              
          protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                      
          throws ServletException, IOException
              {
                  
          // 模板文件會根據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中的相應配置:
          <?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已經成功完成了。


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

          評論

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

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

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

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

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

          Template t = cfg.getTemplate("WEB-INF/templates/test.ftl","utf-8");后面的utf-8不能少,少了就不顯示了
          2012-02-16 11:42 | HelloWan
          主站蜘蛛池模板: 黑龙江省| 综艺| 运城市| 双鸭山市| 方城县| 邓州市| 资溪县| 岫岩| 沽源县| 柞水县| 勐海县| 惠安县| 拉萨市| 静宁县| 西城区| 阳原县| 威宁| 文化| 金昌市| 巴青县| 微山县| 平原县| 浮山县| 洛南县| 芦山县| 望江县| 宁河县| 枣阳市| 托克托县| 尼木县| 清苑县| 鄄城县| 周至县| 长海县| 株洲市| 拜城县| 娄烦县| 顺昌县| 日照市| 蒙阴县| 徐汇区|