`

使用FreeMarker生成Html静态文件

阅读更多
import java.io.*;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import freemarker.template.*;
/*
* Created on 2005-4-7
*
*/

/**
* 测试FreeMarker.
*
* @author scud
*
*/
public class FreeMarkerTest
{

        private final Log logger = LogFactory.getLog(getClass());
      
        private Configuration freemarker_cfg = null;
      
      
      
        public static void main(String[] args)
        {
            //@todo 自己的一个类
            NewsItem aItem = null;
          
            //@todo 装入新闻
            //NewsItem = loadNewsItem(1);
              
            FreeMarkerTest test = new FreeMarkerTest();
          
            Map root = new HashMap();
            root.put("newsitem", aItem);

            String sGeneFilePath = "/tpxw/";
          
            String sFileName = "1.htm";

            boolean bOK = test.geneHtmlFile("/tpxw/view.ftl",root, sGeneFilePath,sFileName);
          
        }
      

        /**
         * 获取freemarker的配置. freemarker本身支持classpath,目录和从ServletContext获取.
         */
        protected Configuration getFreeMarkerCFG()
        {
            if (null == freemarker_cfg)
            {
                // Initialize the FreeMarker configuration;
                // - Create a configuration instance
                freemarker_cfg = new Configuration();

                // - FreeMarker支持多种模板装载方式,可以查看API文档,都很简单:路径,根据Servlet上下文,classpath等等
              
                //htmlskin是放在classpath下的一个目录
                freemarker_cfg.setClassForTemplateLoading(this.getClass(), "/htmlskin");
            }
          
            return freemarker_cfg;
        }

        /**
         * 生成静态文件.
         *
         * @param templateFileName 模板文件名,相对htmlskin路径,例如"/tpxw/view.ftl"
         * @param propMap 用于处理模板的属性Object映射
         * @param htmlFilePath 要生成的静态文件的路径,相对设置中的根路径,例如 "/tpxw/1/2005/4/"
         * @param htmlFileName 要生成的文件名,例如 "1.htm"
         */
        public boolean geneHtmlFile(String templateFileName,Map propMap, String htmlFilePath,String htmlFileName )
        {
               //@todo 从配置中取得要静态文件存放的根路径:需要改为自己的属性类调用
            String sRootDir = "e:/webtest/htmlfile" ;
          
            try
            {
                Template t = getFreeMarkerCFG().getTemplate(templateFileName);

                //如果根路径存在,则递归创建子目录
                creatDirs(sRootDir,htmlFilePath);
              
                File afile = new File(sRootDir +"/" +htmlFilePath + "/" + htmlFileName);

                Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(afile)));

                t.process(propMap, out);
            }
            catch (TemplateException e)
            {
                logger.error("Error while processing FreeMarker template " + templateFileName,e);
                return false;
            }
            catch (IOException e)
            {
                logger.error("Error while generate Static Html File " + htmlFileName,e);
                return false;
            }

            return true;
        }
      
      

        /**
         * 创建多级目录
         *
         * @param aParentDir String
         * @param aSubDir  以 / 开头
         * @return boolean 是否成功
         */
        public static boolean creatDirs(String aParentDir, String aSubDir)
        {
            File aFile = new File(aParentDir);
            if (aFile.exists())
            {
                File aSubFile = new File(aParentDir + aSubDir);
                if (!aSubFile.exists())
                {
                    return aSubFile.mkdirs();
                }
                else
                {
                    return true;
                }
            }
            else
            {
                return false;
            }
        }  


  
}

 

分享到:
评论

相关推荐

    springboot整合freemarker生成静态html的demo.zip

    总的来说,这个"springboot整合freemarker生成静态html的demo"项目展示了如何在SpringBoot应用中集成FreeMarker,以及如何通过模板和字符串两种方式生成HTML。这有助于我们构建更高效、更易于维护的Web应用,将视...

    freemarker生成静态html示例

    在这个Eclipse项目中,你可能需要创建一个Java类来提供数据模型,然后使用Freemarker API来加载模板文件,并结合数据模型生成HTML。这通常涉及到以下几个步骤: 1. 创建数据模型(如Java对象)。 2. 初始化...

    freemarker生成静态网页

    4. **生成静态文件**:使用Freemarker的`Template`类加载模板文件,然后结合数据模型生成最终的HTML。代码如下: ```java Template template = configuration.getTemplate("index.ftl"); Writer out = new ...

    freemarker生成静态HTML例子

    本示例将详细介绍如何使用Freemarker生成静态HTML页面。 1. **Freemarker基本概念** - **模板**: Freemarker的核心是模板,它定义了输出文件的结构和样式,其中包含了一系列指令和变量。 - **数据模型**: 数据...

    FreeMarker教你如何生成html静态页面源码

    在Web开发中,生成HTML静态页面源码是一个常见的需求。静态页面可以提供更快的加载速度和更好的SEO优化。使用FreeMarker实现这个目标,主要有以下几个步骤: 1. **理解FreeMarker模板语言**:FreeMarker的核心是...

    通过freemarker模板 生成PDF

    3. **处理模板**:使用Freemarker API的`Configuration`和`Template`类,将数据模型应用到模板上,生成HTML字符串。 4. **调用wkhtmltox**:通过Java绑定库,将生成的HTML字符串转换为PDF。 5. **保存PDF**:将生成...

    教你如何用FreeMarker生成静态页面.doc

    以下是一个简单的Java代码示例,展示了如何使用FreeMarker生成静态页面: 1. 导入所需的FreeMarker库和IO相关的类。 2. 创建一个名为`FreeMarkerUtil`的公共类。 3. 定义一个静态方法`analysisTemplate`,接收模板...

    httpclient,freemarker的静态化分页

    总的来说,`httpclient`与`freemarker`在页面静态化分页中的结合使用,既保证了数据的动态获取,又实现了静态文件的高效生成,是Web开发中一种实用的优化手段。通过合理的代码组织和设计,可以构建出高效且易于维护...

    FreeMarker动静分离生成html文件

    通过这个例子,我们可以看到FreeMarker如何实现动静分离,以及如何在Eclipse环境中使用它生成HTML文件。这个过程有助于提高开发效率,因为设计师可以专注于HTML模板的设计,而程序员只需关注数据处理和业务逻辑。在...

    JAVA集成Freemarker生成静态html过程解析

    总结来说,Java集成Freemarker生成静态HTML的过程包括:引入Freemarker依赖、配置模板相关设置、编写模板文件、在Controller中处理请求并返回模板名、以及使用工具类将模板渲染为HTML并保存到磁盘。这个过程在Web...

    生成静态页面 freemarker模板

    3. **生成HTML**: 在Struts2的Action中,使用Freemarker API加载模板文件,结合从数据库或其他数据源获取的数据,生成HTML字符串。然后将这个字符串写入到静态HTML文件中。 4. **存储和部署静态页面**: 将生成的...

    EOS 中使用freemarker模板生成PDF文件导出

    总的来说,利用EOS和Freemarker生成PDF文件是一项实用的技术,它结合了模板引擎的灵活性和PDF格式的专业性,使得动态内容的输出变得简单高效。在实际开发中,根据项目需求选择合适的工具和技术栈,能有效提升开发...

    struts2+freemarker 生成静态页面

    5. **配置和优化**:在实际项目中,配置Struts2和FreeMarker生成静态页面时,需要考虑目录结构、文件命名规则、缓存控制等多个方面。例如,静态页面可能存储在特定的目录下,文件名可能包含URL参数以区分不同的动态...

    freemarker生成静态页面------内含使用说明

    Freemarker是一个强大的模板引擎,常用于Web应用中动态生成HTML或其他类型的静态页面。它采用声明式编程方式,使得开发者可以专注于数据模型,而不用关心如何呈现这些数据。本篇文章将深入探讨Freemarker的工作原理...

    Struts2整合Freemarker生成静态页面

    以上就是Struts2整合Freemarker生成静态页面所涉及的主要知识点。通过熟练掌握这些,开发者可以有效地构建动态、高性能的Web应用。在提供的链接中,可能有更具体的示例和教程,帮助你深入理解和实践这一技术。

    jsp 静态引擎(freemarker)生成静态html案例

    3. 个人觉得freemarker 和taglib,jsf至少在使用层面上很像,但是freemarker 的macro容易写,几行代码就搞定了,taglib和jsf需要写一堆java文件和tld文件,繁琐得很 4.freemarker 不能直接调用java对象的method. 这点...

    freemarker生成html

    ### Freemarker生成HTML知识点概述 #### 一、Freemarker简介 Freemarker是一个用Java编写的模板引擎,它可以生成任何格式的文本输出,包括HTML、XML、纯文本等。它将业务逻辑与表现层分离,使开发人员能够专注于...

Global site tag (gtag.js) - Google Analytics