转自http://www.javabc.com/Html/javakyjs/javaky_fv/2007-1/412885210.html
四.Freemarker与Struts结合
1.输出文件换成以ftl格式的文件
E.G.
<action validate="true" type="example.BookAction" scope="request" path="/bookAction" parameter="method" name="bookActionForm"></action>
<forward path="/index.ftl" name="list"></forward>
2.使用struts,jstl等标签
a.导入à<#global html=JspTaglibs["/WEB-INF/tags/struts-html.tld"]>
或<#assign html=JspTaglibs["/WEB-INF/struts-html.tld"]>
<#assign bean=JspTaglibs["/WEB-INF/struts-bean.tld"]>
<#assign logic=JspTaglibs["/WEB-INF/struts-logic.tld"]>
b.使用à<@bean.page id="request" property="request"/>,
<@html.text property="vo.newsTitle" styleClass="input1"/>
五.用Freemarker生成Html页面
例子:MakeFileManager.java
package example;
import freemarker.template.Configuration;
import java.text.SimpleDateFormat;
import java.io.File;
import freemarker.template.DefaultObjectWrapper;
import java.util.Map;
import java.util.HashMap;
import java.io.Writer;
import java.io.OutputStreamWriter;
import java.io.FileOutputStream;
import freemarker.template.TemplateException;
import java.io.IOException;
import freemarker.template.Template;
public class MakeFileManager {
public String make(Book book, BookFtl bookFtl) {
Configuration cfg = new Configuration();//配制
String realPath = bookFtl.getRealPath();
String templatePath = realPath + "/WEB-INF/templates/book";
String cDateStr = "book/" +
new SimpleDateFormat("yyyyMMdd").format(new java.util.
Date());
String filePostfix = ".html";
String path = realPath + "/" + cDateStr;
String fileTimeName = new SimpleDateFormat("yyyyMMddhhmmss").format(new
java.util.Date());
String returnFileName = cDateStr + "/" + fileTimeName + filePostfix;
String fileName = "";
File bookDir = new File(path);
if (bookDir.exists()) {
fileName = path + "/" + fileTimeName + filePostfix;
} else {
bookDir.mkdirs();
fileName = path + "/" + fileTimeName + filePostfix;
}
try {
//设置freemarker的参数
cfg.setNumberFormat("0.##########");//生成html文件时web.xml配制无效
//cfg.setEncoding();
cfg.setDirectoryForTemplateLoading(new File(templatePath));
cfg.setObjectWrapper(new DefaultObjectWrapper());
Template bookTemplate = cfg.getTemplate(bookFtl.getTemplateName());//模板对象
Map root = new HashMap();
root.put("book", book);
root.put("book2",book);
Writer out = new OutputStreamWriter(new FileOutputStream(fileName));
try {
bookTemplate.process(root, out);
} catch (TemplateException e) {
e.printStackTrace();
}
out.flush();
} catch (IOException e) {
e.printStackTrace();
}
return returnFileName;
}
}
分享到:
相关推荐
本压缩包集合了丰富的Freemarker学习资源,涵盖从基础到进阶的各种知识点,以下是这些文档中可能包含的详细内容: 1. **Freemarker中文手册.pdf**: 这份手册通常会详细介绍Freemarker的基本概念,如模板语言、...
Freemarker是一个强大的模板引擎,常用于Web应用中的视图层渲染,特别是在Java环境中与Spring框架结合使用广泛。本篇文章将深入探讨Freemarker的基本概念、语法特性、使用场景以及最佳实践,帮助读者全面理解并掌握...
四、FreeMarker在Web开发中的应用 1. JSP替代:FreeMarker可以替代JSP,减少视图层的Java代码,提高可读性和可维护性。 2. 邮件模板:生成动态邮件内容,提高邮件定制化能力。 3. 文档生成:自动生成报告、合同等...
Freemarker的核心思想是将数据模型与模板结合,通过模板来呈现准备好的数据。 在开始使用Freemarker之前,你需要先下载相关的jar包。你可以访问FreeMarker的官方网站...
### FreeMarker 学习资料详解 #### 一、FreeMarker 模板文件构成 FreeMarker 是一种用于生成动态文档的工具,它通过结合固定的文本、注释、变量(插值)以及指令(FTL标签)来创建动态内容。具体而言,FreeMarker ...
Freemarker学习笔记可以帮助初学者了解,快速掌握Freemarker
在快速入门中,我们看到FreeMarker的基本工作原理是通过模板中的特定指令,如`${...}`,将动态数据插入到静态模板中。例如,以下模板展示了如何欢迎用户并显示最新产品的信息: ```html <title>Welcome! <h1>...
这个“freemarker中文学习资料”压缩包提供了详尽的网页版API文档,对于想要深入理解和掌握Freemarker的开发者来说,是一份非常宝贵的资源。 1. **Freemarker基础概念** - **模板语言**:Freemarker使用一种简单的...
FreeMarker 学习手册 详细介绍FreeMarker模板技术的手册
这个“freemarker学习例子”应该包含了一些基础到进阶的Freemarker用法,帮助初学者快速上手。 在Freemarker中,主要涉及以下几个核心概念: 1. **模板(Templates)**:模板是Freemarker的核心,它是HTML或其他文本...
在本篇文章中,我们将深入探讨FreeMarker的学习要点,包括其基本概念、语法以及实际应用。 一、基本概念 1. 模板(Template):FreeMarker的中心是模板文件,它是一种特殊的文本文件,包含固定文本和变量。变量是由...
下面,我们将深入探讨FreeMarker的基础知识、应用场景以及如何进行学习。 1. **基础概念** - **模板**:FreeMarker的核心是模板,它是由开发者编写的HTML或XML文件,其中嵌入了特定的FreeMarker语法,用于动态生成...
FreeMarker的核心理念是将设计者的职责与程序员的职责分开,设计者专注于创建模板,而程序员负责处理数据模型,两者通过FreeMarker协同工作。 FreeMarker不依赖于特定的Web容器或HTTP协议,这意味着它可以被集成到...
Freemarker是一个强大的模板引擎,常用于Java Web开发中生成...通过学习和掌握Freemarker,开发者能够更高效地构建动态页面,实现数据与视图的解耦。在实际项目中,结合具体业务需求和最佳实践,能够更好地发挥其优势。
以下是对Freemarker中Sequence、Hash以及字符串操作函数的详细说明。 一、Sequence的内置函数: 1. `sequence?first`:返回Sequence的第一个元素,如果Sequence为空,返回null。 2. `sequence?last`:返回Sequence...
FreeMarker 是一个强大的模板引擎,主要用于生成HTML或其他类型的文本输出,尤其在Web开发中被...通过学习FreeMarker,开发者可以更好地实现MVC架构中的视图层,提高开发效率,并创建出更加灵活、可维护的Web应用程序。
本篇将深入探讨如何自定义FreeMarker标签,以扩展其功能并适应特定项目需求。 首先,理解FreeMarker的默认标签语法至关重要。FreeMarker使用${...}表达式来插入变量,#{...}用于输出注释,以及、等控制结构进行条件...