Terry.Li-彬

          虛其心,可解天下之問;專其心,可治天下之學(xué);靜其心,可悟天下之理;恒其心,可成天下之業(yè)。

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks

          1、java應(yīng)用程序中
              我用maven導(dǎo)入FreeMarker的jar包
             
              <dependency>
                <groupId>freemarker</groupId>
                <artifactId>freemarker</artifactId>
                <version>2.3.8</version>
              </dependency>

              package com.test;

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


          import freemarker.cache.ClassTemplateLoader;
          import freemarker.template.Configuration;
          import freemarker.template.DefaultObjectWrapper;
          import freemarker.template.Template;
          import freemarker.template.TemplateException;

          public class Test {

              /** *//**
               * @param args
               */
              public static void main(String[] args) {
                  Configuration configuration = new Configuration();
                  configuration.setObjectWrapper(new DefaultObjectWrapper());
                  configuration.setTemplateLoader(new ClassTemplateLoader(Test.class, "/com/test"));
                  try {
                      Template template = configuration.getTemplate("temp.ftl");
                      StringWriter writer = new StringWriter();
                      Map<String, Object> context = new HashMap<String, Object>();
                     
                      context.put("message", "我的第一個FreeMarker程序");
                     
                      template.process(context, writer);
                      System.out.println(writer.toString());
                  } catch (IOException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  } catch (TemplateException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  }
              }

          }

          這里是用java應(yīng)用程序,需要加入下面兩句(設(shè)置模板文件載入):
          方法一:
            configuration.setObjectWrapper(new DefaultObjectWrapper());
            configuration.setTemplateLoader(new ClassTemplateLoader(Test.class, "/com/test"));

          其中"/com/test" 是模板文件所在的文件夾,前面的“/”必須,這里我的模板文件和當(dāng)前java類在同一路徑下,則這樣寫,如果你的模板文件在src跟目錄下,這里只需要寫“/”就可以了

          context.put("message", "我的第一個FreeMarker程序");
          是模板文件中用到的變量,map中的變量可以是javabean,也可以是對象


          方法二:
          configuration.setServletContextForTemplateLoading(getServletContext(), "WEB-INF/templates");
          這里主要針對Servlet的時候,當(dāng)然在Servlet中也可以用方法一提到的寫法
          package com.newegg.lab.freemarker.servlet;

          import java.io.IOException;
          import java.io.StringWriter;
          import java.io.Writer;
          import java.util.HashMap;
          import java.util.Map;

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

          import freemarker.cache.ClassTemplateLoader;
          import freemarker.template.Configuration;
          import freemarker.template.DefaultObjectWrapper;
          import freemarker.template.Template;
          import freemarker.template.TemplateException;

          /** *//**
           * Servlet implementation class for Servlet: FreemarkerServlet
           *
           */
          public class FreemarkerServlet extends javax.servlet.http.HttpServlet implements
                  javax.servlet.Servlet {

              private Configuration configuration;

              private Template template;
              /**//*
               * (non-Java-doc)
               *
               * @see javax.servlet.http.HttpServlet#HttpServlet()
               */
              public FreemarkerServlet() {
                  super();
              }

              @Override
              public void destroy() {
                  // TODO Auto-generated method stub
                  configuration = null;
              }

              @Override
              public void init() throws ServletException {
                  // TODO Auto-generated method stub
                  configuration = new Configuration();
                  configuration.setServletContextForTemplateLoading(getServletContext(), "WEB-INF/templates");
          //        configuration.setObjectWrapper(new DefaultObjectWrapper());
          //        configuration.setTemplateLoader(new ClassTemplateLoader(FreemarkerServlet.class, "/"));
              }

              /**//*
               * (non-Java-doc)
               *
               * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request,
               *      HttpServletResponse response)
               */
              protected void doGet(HttpServletRequest request,
                      HttpServletResponse response) throws ServletException, IOException {
                  // TODO Auto-generated method stub
                  this.doPost(request, response);
              }

              /**//*
               * (non-Java-doc)
               *
               * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request,
               *      HttpServletResponse response)
               */
              protected void doPost(HttpServletRequest request,
                      HttpServletResponse response) throws ServletException, IOException {
                  // TODO Auto-generated method stub
                  Map root = new HashMap();
                  root.put("message", "Hello World!的的的的");

                  // Get the templat object
                  Template t = configuration.getTemplate("test.ftl");

                  // Prepare the HTTP response:
                  // - Use the charset of template for the output
                  // - Use text/html MIME-type
                  response.setContentType("text/html; charset=" + t.getEncoding());
                  Writer out = response.getWriter();

                  // Merge the data-model and the template
                  try {
                      t.process(root, out);

                      StringWriter stringWriter = new StringWriter();
                      t.process(root, stringWriter);
                      System.out.println(stringWriter.toString());
                  } catch (TemplateException e) {
                      throw new ServletException(
                              "Error while processing FreeMarker template", e);
                  }
              }
          }


          模板文件中需要使用 ${}將java類中在Map對象中聲明的變量包圍起來就可以了

          例如模板文件:
          <pre>
          //描述信息是 : ${message}
          </pre>


          則得到的結(jié)果是:
          <pre>
          //描述信息是 : Hello World!的的的的
          </pre>

          posted on 2008-09-17 00:00 禮物 閱讀(5914) 評論(0)  編輯  收藏 所屬分類: 模板
          主站蜘蛛池模板: 手游| 温泉县| 万盛区| 汪清县| 扎鲁特旗| 扬州市| 花莲县| 大兴区| 广饶县| 兖州市| 青铜峡市| 四子王旗| 淄博市| 金乡县| 修水县| 怀集县| 林周县| 高唐县| 嵊州市| 东城区| 山丹县| 信丰县| 长乐市| 视频| 克拉玛依市| 肇东市| 南投县| 滨州市| 石河子市| 马尔康县| 南昌市| 吉隆县| 赤城县| 防城港市| 法库县| 界首市| 佛坪县| 伊宁市| 新竹县| 扎赉特旗| 闽清县|