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

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

    • 分享

      使用FreeMarker生成靜態(tài)頁原理和實例

       hmtomyang 2015-09-22

      上次我們探討了FreeMarker的模板組成,今天我們就來探討一下FreeMarker生成靜態(tài)頁原理。簡單說就是“模板”+“數(shù)據(jù)”=“靜態(tài)頁面輸出”,也就是將頁面中所需要的樣式放入FreeMarker模板文件中,然后將頁面所需要的數(shù)據(jù)動態(tài)綁定,并放入Map中,通過調(diào)用FreeMarker模板文件解析類process()方法完成靜態(tài)頁面的生成。如圖所示:

      “模板”+“數(shù)據(jù)”=“靜態(tài)頁面輸出”

      了解過FreeMarker生成靜態(tài)頁的原理之后,我們就來通過一個實例更直觀的去剖析一下。

      一、 創(chuàng)建一個簡單的FreeMarker模板文件user.ftl

      1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      2. <html>
      3. <head>
      4. <meta http-equiv=Content-Type content="text/html; charset=utf-8">
      5. <title>user.ftl</title>
      6. </head>
      7. <body>
      8. ${user.userName}
      9. ${user.userPassword}
      10. </body>
      11. </html>

      二、 創(chuàng)建FreeMarker模板文件動態(tài)綁定的數(shù)據(jù)的對象類User.java

      1. public class User{
      2. private String userName;
      3. private String userPassword;
      4.  
      5. public String getUserName(){
      6. return userName;
      7. }
      8. public void setUserName(String userName){
      9. this.userName=userName;
      10. }
      11.  
      12. public String getUserPassword(){
      13. return userPassword;
      14. }
      15. public void setUserName(String userPassword){
      16. this.userPassword=userPassword;
      17. }
      18. }

      三、 創(chuàng)建FreeMarker模板文件解析器工具類FreeMarkertUtil.java

      1. //省略包的導(dǎo)入
      2. Public class FreeMarkerUtil{
      3. //templatePath模板文件存放路徑
      4. //templateName 模板文件名稱
      5. //filename 生成的文件名稱
      6. public static void analysisTemplate(String templatePath,String templateName,
      7. String fileName,Map<?,?>root){
      8. try {
      9. Configuration config=new Configuration();
      10. //設(shè)置要解析的模板所在的目錄,并加載模板文件
      11. config.setDirectoryForTemplateLoading(new File(templatePath));
      12. //設(shè)置包裝器,并將對象包裝為數(shù)據(jù)模型
      13. config.setObjectWrapper(new DefaultObjectWrapper());
      14. //獲取模板,并設(shè)置編碼方式,這個編碼必須要與頁面中的編碼格式一致
      15. //否則會出現(xiàn)亂碼
      16. Template template=config.getTemplate(templateName,“UTF-8”);
      17. //合并數(shù)據(jù)模型與模板
      18. FileOutputStream fos = new FileOutputStream(fileName);
      19. Writer out = new OutputStreamWriter(fos,“UTF-8”);
      20. template.process(root, out);
      21. out.flush();
      22. out.close();
      23. } catch (IOException e) {
      24. e.printStackTrace();
      25. }catch (TemplateException e) {
      26. e.printStackTrace();
      27. }
      28. }
      29. }


      四、 創(chuàng)建FreeMarker生成靜態(tài)頁面測試類ClientTest.java

      1. //省略包的導(dǎo)入
      2. public class ClientTest{
      3. public static void main(String[] args){
      4. //生成數(shù)據(jù)Map,實際使用中這里可以是數(shù)據(jù)庫查詢出的數(shù)據(jù)
      5. User user=new User();
      6. user.setUserName("Csyor");
      7. user.setUserPassword("123456");
      8. Map<String,Object> root=new HashMap<String, Object>();
      9. root.put("user", user);
      10. //下面是你定義模板的路徑
      11. String templatesPath="D:/MyEclipse/workspaces/freeMaker/templates";
      12. //下面是模板的名稱
      13. String templateFile="/user.ftl";
      14. //下面是靜態(tài)頁面輸出路徑
      15. String htmlFile=templatesPath+"/user.html";
      16. //根據(jù)模板生成靜態(tài)頁面
      17. FreeMarkertUtil.analysisTemplate(templatesPath,templateFile,htmlFile,root);
      18. }
      19. }

      至此,一個簡單的FreeMarker生成靜態(tài)頁面的實例已經(jīng)完成,在你指定的靜態(tài)頁面路徑(htmlFile)中已經(jīng)有一個和你定義的模板(user.ftl)格式一樣的靜態(tài)文件。當(dāng)然實際使用過程中不要忘記導(dǎo)入freemarker.jar,而且FreeMarker不只是能夠生產(chǎn)前臺view頁面,也可以根據(jù)實際情況生產(chǎn).java、.jsp、.xml等文件。

      本文固定鏈接: http://www./185.html - 穿梭于偶然

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多