网上找了例子也没有成功,我只想把数据从数据库里取出来,然后生成一张静态的html表啊
大家有没有据对能用的例子啊,网上我找的都没有用哦

解决方案 »

  1.   


    package com.kevin;import java.io.*;
    import java.util.HashMap;
    import java.util.Map;import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import freeer.template.*;
    /*
    * Created on 2005-4-7
    *
    *//**
    * 测试FreeMarker.
    *
    * @author scud
    *
    */
    public class FreeMarkerTest
    {    private final Log logger = LogFactory.getLog(getClass());
        
        private Configuration freeer_cfg = null;
        String templatePath;
        
        
        
        public static void main(String[] args)
        {
            //@todo 自己的一个类
            NewsItem aItem = new NewsItem();
            aItem.setTitle("新闻标题sfdwfsfsfs$#$%");
            aItem.setShowContent("新闻正文");
            aItem.setAddtime("2006-06-26");
          
            //@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("view.ftl",root, sGeneFilePath,sFileName);
          
        }
            /**
          * 获取freeer的配置. freeer本身支持classpath,目录和从ServletContext获取.
          */
        protected Configuration getFreeMarkerCFG()
        {
            if (null == freeer_cfg)
            {
              // Initialize the FreeMarker configuration;
              // - Create a configuration instance
              freeer_cfg = new Configuration();          // - FreeMarker支持多种模板装载方式,可以查看API文档,都很简单:路径,根据Servlet上下文,classpath等等
              
              //htmlskin是放在classpath下的一个目录
              freeer_cfg.setClassForTemplateLoading(this.getClass(), "/");
            }
          
            return freeer_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(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;
            }
        }       public String loadTemplate(String templateName) {
            StringBuffer sb = new StringBuffer();
            try {
              File file = new File(templatePath+"/"+templateName);
              BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"));
              String line = reader.readLine();
              while(line != null)   {
                sb.append(line);
                sb.append("\r\n");
                line = reader.readLine();
              }
              reader.close();
            } catch (IOException e) {
              e.printStackTrace();
            }
            return sb.toString();
        }//     public void saveTemplate(String templateName, String templateContent) {
    //         try {
    //           File file = new File(templatePath + "/" + templateName);
    //           Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF-8"));
    //           out.write(templateContent);
    //           out.flush();
    //           //扔出templatesave事件
    //           TemplateSaveEvent evt = new TemplateSaveEvent();
    //           evt.setTemplateName(templateName);
    //           dispatchTemplateEvent(evt);
    //         } catch (IOException e) {
    //           throw new SystemException("Write template Error",e);
    //         }
    //     }  
    } package com.kevin;public class NewsItem {   public String title;
       public String showContent;
       public String addtime;
       public String getAddtime() {
           return addtime;
       }
       public void setAddtime(String addtime) {
           this.addtime = addtime;
       }
       public String getShowContent() {
           return showContent;
       }
       public void setShowContent(String showContent) {
           this.showContent = showContent;
       }
       public String getTitle() {
           return title;
       }
       public void setTitle(String title) {
           this.title = title;
       }}