乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Java Web開發(fā)——FreeMarker模板使用方法講解

      FreeMarker簡介

      FreeMarker模板文件主要由如下4個(gè)部分組成:

      1,文本:直接輸出的部分

      2,注釋:<#-- ... -->格式部分,不會(huì)輸出

      3,插值:${...}#{...}格式的部分,將使用數(shù)據(jù)模型中的部分替代輸出

      4,FTL指令:FreeMarker指定,HTML標(biāo)記類似,名字前加#予以區(qū)分,不會(huì)輸出

       

      下面是一個(gè)FreeMarker模板的例子,包含了以上所說的4個(gè)部分

      <html><br>

      <head><br>

      <title>Welcome!</title><br>

      </head><br>

      <body><br>

      <#-- 注釋部分 --><br>

      <#-- 下面使用插值 -->

      <h1>Welcome ${user} !</h1><br>

      <p>We have these animals:<br>

      <u1><br>

      <#-- 使用FTL指令 -->

      <#list animals as being><br>

         <li>${being.name} for ${being.price} Euros<br>

      <#list><br>

      <u1><br>

      </body><br>

      </html>

       

      java程序中使用FreeMarker

      FreeMarker的模板就是一個(gè).ftl文本文件,在該文件中使用了一些FreeMarker的特別標(biāo)記,這些標(biāo)記會(huì)動(dòng)態(tài)顯示,或者控制程序輸出,如下面的模板文件代碼:

      ${name},你好!${msg}

      這里類似于${}的就是動(dòng)態(tài)的內(nèi)容,稱作"插值".

      為了使用FreeMarker來將數(shù)據(jù)模型中的值合并到模板文件中,可按如下步驟進(jìn)行:

      1,創(chuàng)建Configuration實(shí)例,該實(shí)例負(fù)責(zé)管理FreeMarker的模板加載路徑,負(fù)責(zé)生成模板實(shí)例

      2,使用Configuration實(shí)例來生成Template實(shí)例,同進(jìn)需要指定使用的模板文件

      3,填充數(shù)據(jù)模型,數(shù)據(jù)模型就是一個(gè)Map對(duì)象

      4,調(diào)用Template實(shí)例的process方法完成合并.

       

      下面是一個(gè)使用FreeMarker創(chuàng)建輸出的Java程序,程序源代碼如下:

      package lee;

      import java.util.*;

      import java.io.*;

      import freemarker.template.*;

       

      public class HelloFreeMarker

      {

          private Configuration cfg;

          public void init() throws Exception

      {

              //初始化FreeMarker配置

              //創(chuàng)建一個(gè)Configuration實(shí)例

              cfg = new Configuration();

              //設(shè)置FreeMarker的模版文件位置

              cfg.setDirectoryForTemplateLoading(new File("templates"));

          }

         

      public void process()throws Exception

      {

              Map root = new HashMap();

              root.put("name", "FreeMarker!");

         root.put("msg" , "您已經(jīng)完成了第一個(gè)FreeMarker的示例");

              Template t = cfg.getTemplate("test.ftl");

              t.process(root, new OutputStreamWriter(System.out));

       

      }

       

      public static void main(String[] args)throws Exception

      {

         HelloFreeMarker hf = new HelloFreeMarker();

         hf.init();

         hf.process();

      }

      }

      上面的代碼創(chuàng)建了一個(gè)Map實(shí)例,這個(gè)Map將作為模板文件的數(shù)據(jù)模型,我們要使用FreeMarker必須導(dǎo)入freemarker.jar文件,FreeMarker的官網(wǎng)是http://freemarker./,雖然FreeMarker可以在Java程序中使用,但大部分時(shí)候還是用來生成HTML頁面.

       

      Web應(yīng)用中使用FreeMarker

       

      Web應(yīng)用中使用FreeMarker跟在Java程序中使用并沒有太大的區(qū)別.下面是一個(gè)在Web中使用的例子,用來生成HTML頁面的模板文件內(nèi)容如下:

      <html>

      <head>

      <title>FreeMarkerHelloWorld</title>

      </head>

      <body>

      ${message}

      </body>

      </html>

      我們?cè)?/span>Web應(yīng)用中使用FreeMarker時(shí),應(yīng)該讓Servlet來合并模板和數(shù)據(jù),因此,Servlet負(fù)責(zé)創(chuàng)建Configuration實(shí)例,并負(fù)責(zé)合并模板和數(shù)據(jù),下面是Servlet源代碼:

      package lee;

      import java.util.*;

      import java.io.*;

      import javax.servlet.*;

      import javax.servlet.http.*;

      import freemarker.template.*;

       

      public class HelloServlet extends HttpServlet

      {

          private Configuration cfg;

          public void init()

      {

              //初始化FreeMarker配置

              //創(chuàng)建一個(gè)Configuration實(shí)例

              cfg = new Configuration();

              //設(shè)置FreeMarker的模版文件位置

              cfg.setServletContextForTemplateLoading(getServletContext(), "WEB-INF/templates");

          }

         

          public void service(HttpServletRequest request, HttpServletResponse response)

              throws ServletException, IOException

      {       

              //建立數(shù)據(jù)模型

              Map root = new HashMap();

              root.put("message", "Hello FreeMarker!");    

              //取得模版文件

              Template t = cfg.getTemplate("test.ftl");       

              // 開始準(zhǔn)備生成輸出

              // - 使用模版文件的charset作為本頁面的charset

              // - 使用text/html MIME-type

              response.setContentType("text/html; charset=" + t.getEncoding());

              Writer out = response.getWriter();

             

              //合并數(shù)據(jù)模型和模版,并將結(jié)果輸出到out

              try

         {

                  t.process(root, out);

              }

         catch (TemplateException e)

         {

                  throw new ServletException("處理Template模版中出現(xiàn)錯(cuò)誤", e);

              }

          }

      }

      可以看到這個(gè)Servlet類的代碼與普通的Java程序中使用FreeMarker大致一樣,區(qū)別有兩個(gè):1,設(shè)置FreeMarker加載模板的方法不一樣,Servlet中設(shè)置加載的方法是setServletContextForTemplateLoading,第一個(gè)參數(shù)是本web應(yīng)用的ServletContext,第二個(gè)參數(shù)是模板文件的路徑.;2,結(jié)果必須輸出到HttpServletResponse,才能被瀏覽器加載.

      配置Servletweb.xml文件中的代碼如下:

      <web-app>

      <servlet>

         <servlet-name>hello</servlet-name>

         <servlet-class>lee.HelloServlet</servlet-class>

      </servlet>

      <servlet-mapping>

         <servlet-name>hello</servlet-name>

         <url-pattern>/hello</url-pattern>

      </servlet-mapping>

      </web-app>

       

      轉(zhuǎn)載請(qǐng)注明出處: 程序員之家  http://www.

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多