生成新闻的静态文件时用到的代码.仅供参考.请根据实际情况修改.
模板:
< html >
< head >
< title > 查看文章: $ {newsitem.title} </ title >
</ head >
< body >
< table width = " 100% " border = " 0 " cellpadding = " 0 " cellspacing = " 0 " bgcolor = " #FFFFFF " >
< tr >
< td >
< table width = " 95% " border = " 0 " align = " center " cellpadding = " 2 " cellspacing = " 6 " >
< tr >
< td height = " 10 " align = " left " colspan = 2 ></ td >
</ tr >
< tr >
< td align = " left " width = " 538 " >
< strong > $ {newsitem.title} </ strong > ( $ {newsitem.addtime} )
</ td >
< td align = " right " >
< a href = " index.jsp " > 返回 </ a >
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;
</ td >
</ tr >
< tr >
< td align = " left " valign = top colspan = 2 >
< hr align = " left " width = " 95% " size = " 1 " noshade color = " #cc0000 " >
</ td >
</ tr >
< tr >
< td colspan = 2 > $ {newsitem.showContent} </ td >
</ tr >
</ table >
< br >
</ td >
</ tr >
</ table >
</ body >
</ 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. * ;
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);
}
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;
}
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 ;
}
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 ;
}
}
}
相关推荐
以下是一个简单的Java代码示例,展示了如何使用FreeMarker生成静态页面: 1. 导入所需的FreeMarker库和IO相关的类。 2. 创建一个名为`FreeMarkerUtil`的公共类。 3. 定义一个静态方法`analysisTemplate`,接收模板...
在这个实例中,我们将使用Eclipse来创建和运行Freemarker项目,设置相应的构建路径和构建过程,确保Freemarker模板能正确编译并生成静态HTML。 4. **项目结构**:一个典型的Freemarker静态化项目可能包含以下部分:...
#### 三、Freemarker生成静态页面的工作原理 Freemarker生成静态页面的基本步骤如下: 1. **准备模板** 创建一个模板文件,该文件通常是一个包含HTML标记的普通文件,其中可能包含Freemarker的特殊标签或表达式...
在企业级应用中,它常被用来生成静态页面或用于数据展示。 首先,让我们了解 Freemarker 的基本概念。Freemarker 由三个主要部分组成:Freemarker API、数据和模板文件(通常为FTL文件)。API是Java代码,用于与...
生成静态HTML网页的核心在于减少服务器处理每个请求的时间,这可以通过预生成或实时生成静态页面来实现。预生成是在用户请求之前就生成好HTML,而实时生成则是在每次请求时动态生成HTML并返回。这两种方法都有其优...
4. 使用Freemarker生成XML:通过`Template`类的`process()`方法,将数据模型应用到模板上,生成一个XML字符串。 5. 创建Word文档:使用Apache POI的`XWPFDocument`类实例化一个新的docx文档。 6. 将XML转换为XWPF...
本实例“freemarker生成静态html”提供了一个具体的使用Freemarker进行静态页面生成的演示。下载后的压缩包内包含了必要的框架和配置文件,方便用户快速理解和部署。"springdemo"这个文件名暗示了该实例可能基于...
以上就是一个FreeMarker的简单实例,展示了如何使用FreeMarker将Java对象与HTML模板结合,生成动态网页。在实际开发中,FreeMarker的强大功能远不止于此,它能帮助开发者实现灵活、高效且易于维护的视图层。
同时,这个描述中还提到了转换为PDF格式,虽然FreeMarker本身不直接支持PDF生成,但可以结合其他库,如Apache POI或iText,先用FreeMarker生成HTML或Word,再转换为PDF。 在实际应用中,这个过程可能会涉及到一些...
在Java开发中,Freemarker被广泛应用于生成静态页面或者自定义报告。本篇将深入探讨如何利用Freemarker来生成PDF文档。 PDF(Portable Document Format)是一种通用的文件格式,可以精确地保留原始文档的格式和内容...
FreeMarker模板引擎允许开发者将静态模板与动态数据结合,生成所需的输出,这对于创建自定义报告、文档或邮件非常有用。 首先,我们需要在项目中引入FreeMarker库。如果你使用的是Maven,可以在pom.xml文件中添加...
FreeMarker是一款强大的、开源的模板引擎,主要用于生成动态HTML、XML或其他格式的文本。它在Web开发中,尤其是在Struts2框架中,被广泛用于视图层的实现,以分离业务逻辑与展示逻辑,实现MVC(Model-View-...
虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据 FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件 FreeMarker与容器无关...
Freemarker是一个强大的模板引擎,常用于Web开发中生成动态HTML页面。在Java Web工程中,Freemarker作为视图层技术,与后端控制器(如Spring MVC)结合,能够帮助开发者将静态模板与业务逻辑分离,使得网页设计更加...
### SSH2中的URLRewrite与Struts2生成静态页面 #### URLRewrite的理解与应用 ...通过这种方式,不仅可以实现Struts2中URL的重写,还能通过Freemarker生成静态页面,极大地提高了Web应用的灵活性和可维护性。
2. **高效渲染**:Freemarker在服务器端生成静态页面,将计算和逻辑处理过程一次性完成,减少了客户端的等待时间。 3. **分离关注点**:开发者可以专注于业务逻辑,而设计师则专注于页面布局,两者的工作无需相互...
在Java开发中,利用Freemarker生成Word文档是一种常见的需求,尤其是在处理动态数据和报告生成时。以下将详细介绍如何使用Freemarker和Java生成Word文档。 首先,理解Freemarker的工作原理:Freemarker是一个基于...
这个实例是一个不依赖数据库、使用相对路径生成文件的基础示例,非常适合初学者了解和学习Freemarker的基本用法。 1. **Freemarker简介** Freemarker是一个开源的模板语言,它与编程语言解耦,允许开发者将业务...