要命了,FreeMarker搞了半天都没有成功生成静态页面 网上找了例子也没有成功,我只想把数据从数据库里取出来,然后生成一张静态的html表啊大家有没有据对能用的例子啊,网上我找的都没有用哦 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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; }} frame标签使用问题 求解一个正则表达式 用java做新浪微博头像截图上传 一个简单的问题,求解 緊急求教實現此頁面。僅用JSP+HTML+MYSQL實現 编程,学的挺多,但不精,我该怎样发展? 为什么我的weblogic6.1一设置了连接池 就启动失败啊? JSP中的<% %>中的内容显示不出来??? jsp中的中文问题--急急急 请教:如何实现一个树型控件,就象http://expert.csdn.net/expert/forum.asp左边的。 为什么打不开这个网页?还要进行哪些配置? 如何修改form表单中多条记录的值
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;
}}