<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA流通橋

    JAVA啟發者

    統計

    留言簿(3)

    AJAX相關網址

    Eclipse相關網址

    Hibernate

    java相關網址

    LINUX相關網址

    webwork相關網址

    友好鏈接

    閱讀排行榜

    評論排行榜

    用freemarker、webwork發布靜態頁面的方法

    方法一:(這個方法借鑒freemarker的docs文檔Programmer's Guide 的quick start部分,詳細請看相關的文檔。

    java 代碼

     

    1. public class HtmlTemplateGenerator {   
    2.   
    3.     Configuration cfg = null;   
    4.        
    5.     public HtmlTemplateGenerator(String templatePath) throws IOException {   
    6.         cfg = new Configuration();   
    7.         cfg.setDefaultEncoding("UTF-8");   
    8.         cfg.setDirectoryForTemplateLoading(new File(templatePath));   
    9.         cfg.setObjectWrapper(new DefaultObjectWrapper());   
    10.     }   
    11.        
    12.     /**  
    13.      * 生成靜態文件  
    14.      * @param ftlTemplate ftl模版文件  
    15.      * @param contents    ftl要用到的動態內容  
    16.      * @param savePath    文件保存路徑  
    17.      * @param saveFilename 保存文件名  
    18.      * @throws IOException  
    19.      * @throws TemplateException  
    20.      */  
    21.     public void create(String ftlTemplate, Map contents, String savePath, String saveFilename) throws IOException, TemplateException {   
    22.         Template temp = cfg.getTemplate(ftlTemplate);   
    23.         /* Merge data model with template */  
    24.            
    25.         String realPath = ServletActionContext.getServletContext().getRealPath(savePath);   
    26.         System.out.println( saveFilename + ":" + realPath);   
    27.         File file = new File(realPath);   
    28.         if(!file.exists())   
    29.             file.mkdirs();   
    30.            
    31.         Writer out = new OutputStreamWriter(new FileOutputStream(realPath + "/" + saveFilename),"UTF-8");   
    32.         temp.process(contents, out);   
    33.         out.flush();   
    34.     }   
    35.        
    36. }     

            如果用spring,可以將它配置成bean,然后在其他地方使用。第五行的 templatePath 是模版文件的路徑,比如/WEB-INF/template。
            action中的使用:HtmlTemplateGenerator.create("html/magazine/search.ftl", null, "/magazine", "search.html"); 其中“html/magazine/search.ftl”是在“/WEB-INF/template”目錄下。這里還需要注意的是。模版文件(search.ftl)中如果還要引用其他文件,它的路徑也是不需要添加總路徑“/WEB-INF/template”。

    方法二:繼承webwork的FreemarkerResult,改寫getWriter方法:
    不知有無好的法子。

    java 代碼
    1. protected Writer getWriter() throws IOException {   
    2.         String savePath = (String) ActionContext.getContext().getSession().get("SAVE_PATH");   
    3.         String saveFilename = (String) ActionContext.getContext().getSession().get("SAVE_FILENAME");   
    4.         String realPath = ServletActionContext.getServletContext().getRealPath(savePath);   
    5.         System.out.println( saveFilename + ":" + realPath);   
    6.         File file = new File(realPath);   
    7.         if(!file.exists())   
    8.             file.mkdirs();   
    9.            
    10.         return templateOut = new OutputStreamWriter(new FileOutputStream(realPath + "/" + saveFilename),"UTF-8");   
    11.     }  

            這里的路徑和文件名通過webwork的session傳入,不知有無其他好方法。
            如果生成文件的同時還需要看到生成的頁面,則要改寫“doExecute”:

    java 代碼
    1. template.process(model, getWriter());   
    2. template.process(model, super.getWriter()); //添加這句   
    3. templateOut.flush();  

     

            生成的文件格式不限于html,可以是其他文件格式,如js,text等。       
            比較這兩種方法:
            方法一:在需要生成分頁文件時,比較合適。
            方法二:可以象往常一樣使用,一次需要生成多文件則不適合。

            不知各位在做這些項目時,使用甚么好方法。

    posted on 2007-04-18 11:56 朱巖 閱讀(412) 評論(0)  編輯  收藏 所屬分類: freemarker文章


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 在线播放免费人成视频网站| 亚洲GV天堂GV无码男同| 国产一级高青免费| 久久青青草原亚洲av无码| 尤物视频在线免费观看| 亚洲欧洲一区二区三区| yellow视频免费在线观看| 亚洲午夜精品久久久久久浪潮| 国产免费内射又粗又爽密桃视频| 精品国产香蕉伊思人在线在线亚洲一区二区 | 在线免费观看你懂的| 亚洲五月六月丁香激情| 亚洲免费电影网站| 亚洲熟妇自偷自拍另欧美| 全部免费国产潢色一级| 91视频免费观看| 久久精品国产亚洲AV麻豆网站| 国产va免费精品观看精品| 亚洲熟妇自偷自拍另欧美| 亚洲毛片av日韩av无码| 国产成人免费ā片在线观看老同学| 久久青草亚洲AV无码麻豆| 成人免费一级毛片在线播放视频| 亚洲av无码无线在线观看| 亚洲午夜福利精品久久| 91久久成人免费| 亚洲AV无码成人精品区狼人影院 | 日本二区免费一片黄2019| 免费观看四虎精品成人| 久久久亚洲精品视频| 久久这里只有精品国产免费10| 日韩在线观看视频免费| 亚洲成人在线网站| 国产国产成年年人免费看片| 日本道免费精品一区二区| 亚洲а∨天堂久久精品9966| 亚洲视频在线精品| 最近免费中文字幕大全免费版视频| 亚洲人片在线观看天堂无码| 中文字幕亚洲日本岛国片| 国产成人免费网站|