FreeMarker 入门实例
public class FreeMarkerTest extends TestCase {
public void test01() throws IOException, TemplateException{
String dir = "E:/Workspaces/freeMarkerTest/src/com/ysen";
Configuration cfg = new Configuration();
//1从什么地方加载freemarker模板文件
cfg.setDirectoryForTemplateLoading(new File(dir));
//2加载模板
Template temp = cfg.getTemplate("test01.ftl");
//3定义数据
Map root = new HashMap();
root.put("helloWorld", "哈喽世界");
//4定义输出
Writer out = new FileWriter(dir+"/test01_out.txt");
temp.process(root, out);
}
//关于空值的处理问题
public void test02() throws Exception{
String dir ="E:/Workspaces/freeMarkerTest/src/com/ysen";
Configuration cfg = new Configuration();
cfg.setDirectoryForTemplateLoading(new File(dir));
Template template = cfg.getTemplate("/test02.ftl");
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
Map root = new HashMap();
root.put("today", new Date());
Writer out = new FileWriter(dir+"/test02.txt");
template.process(root, out);
}
//关于集合的处理
public void test03() throws Exception{
String dir = "E:/Workspaces/freeMarkerTest/src/com/ysen";
Configuration cfg = new Configuration();
cfg.setDirectoryForTemplateLoading(new File(dir));
Template template = cfg.getTemplate("test03.ftl");
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
Map root = new HashMap();
List list = new ArrayList();
for(int i=0; i<10; i++){
list.add("listvalue"+i);
}
root.put("list", list);
//定义输出
Writer out = new FileWriter(dir+"/test03out.txt");
template.process(root, out);
}
//关于freemarker的宏定义
public void test04() throws Exception{
String dir = "E:/Workspaces/freeMarkerTest/src/com/ysen";
Configuration cfg = new Configuration();
//配置freemarker从什么地方加载模板文件
cfg.setDirectoryForTemplateLoading(new File(dir));
//忽略异常
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
//加载模板
Template template = cfg.getTemplate("test04.ftl");
//定义数据
Map root = new HashMap();
root.put("name", "李四");
//定义输出
Writer out = new FileWriter(dir+"/test04_out.txt");
template.process(root, out);
}
//关于auto-import特性
public void test05() throws Exception{
String dir = "E:/Workspaces/freeMarkerTest/src/com/ysen";
Configuration cfg = new Configuration();
//配置freemarker从什么地方加载模板文件
cfg.setDirectoryForTemplateLoading(new File(dir));
//忽略异常
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
//添加auto-import
cfg.addAutoImport("my", "common.ftl");
//加载模板
Template template = cfg.getTemplate("test05.ftl");
//定义数据
Map root = new HashMap();
root.put("name", "李四");
//定义输出
Writer out = new FileWriter(dir+"/test05_out.txt");
template.process(root, out);
}
}
test01.ftl
第一个测试程序:${helloWorld}
test02.ftl
第一个测试程序:<#if strvalue?exists>${strvalue}</#if>
${boolvalue?string("是","否")}
${today?string("yyyy年MM月dd日")}
test03.ftl
<#list list as v>
${v}-${v_index} [${v_has_next?string("y","n")} ]
</#list>
test04.ftl
<#macro greet p>
Hello,${p}
</#macro>
<@greet p="张三" />
<@greet p="${name}" />
test05.ftl
<@my.greet p="张三" />
<@my.greet p="${name}" />
common.ftl
<#macro greet p>
Hello,${p}
</#macro>
分享到:
相关推荐
这个"freemarker01_02"压缩包包含了两个视频教程,分别介绍了FreeMarker的基本概念以及如何将文件读写到HTML中。 在"freemarker01_freemaker的介绍和简单使用"中,我们首先会了解到FreeMarker的核心概念,它是基于...
在“FreeMarker_01”这个压缩包中,可能包含了示例模板文件、相关的Java代码示例,以及解决问题的具体步骤。通过学习这些资源,开发者可以更深入地理解如何解决Freemarker中的乱码问题,并将这些经验应用到实际项目...
3. `date()`和`time()`:将字符串转换为日期或时间对象,如`${date("yyyy-MM-dd", "2022-01-01")}`。 四、模板继承和导入 1. `#include`:包含其他模板,用于代码复用。 2. `#extends`:定义模板继承关系,子模板...
5. **视图解析**:Spring MVC 使用 View Resolver 来解析控制器返回的视图名,常见的有 JSP、Thymeleaf、Freemarker 等。返回的视图名不包含扩展名,解析器会自动加上并查找对应的模板文件。 6. **异常处理**:...
标题 "happycoding_libs_01" 暗示这是一个关于编程库的集合,可能是一个项目或学习资源的依赖包。这个压缩包包含了多个Java库,它们在开发过程中通常用于实现特定的功能。让我们逐一解析这些库及其相关知识点: 1. ...
- **日期**:日期/时间相关的数据,如2023-09-01T12:00:00。 - **布尔值**:true或false,常用于条件判断。 ##### 4.3 Hashes、Sequences和集合 - **Hashes**:每个元素都有一个唯一的名字与之关联,例如`user = {...
例如,可以将一个字符串如`"2023-04-01"`转换为日期格式。 #### 四、其他字符串操作 7. **ends_with**: 检查字符串是否以特定子串结尾。例如,`"<#if "redhead"?ends_with("head")>"`的结果为`true`。 8. **html*...
5. **ViewResolver**:视图解析器负责根据逻辑视图名查找物理视图,如JSP、FreeMarker等。 6. **View**:视图组件负责渲染模型数据并返回给客户端。它可以是HTML、JSON、XML等形式。 在"springLogin"这个例子中,...
在这个"springmvc_day01_start.zip"压缩包中,我们可以找到一个详细的SpringMVC入门实例,涵盖了从环境搭建到代码编写的全过程。 首先,环境搭建是学习任何技术的第一步。对于SpringMVC,这通常包括以下几个部分: ...
3. **模板引擎**:如FreeMarker或Thymeleaf,它们允许开发者用简单的语法编写动态页面,将数据注入到预定义的模板中,生成HTML输出。 4. **用户权限管理**:CMS系统需要有角色和权限的概念,以便控制不同用户对内容...
Spring MVC支持多种视图技术,如JSP、FreeMarker、Thymeleaf等。通过`ModelAndView`或`@ResponseBody`注解来指定返回的视图或直接返回JSON/XML数据。 5. **HandlerMapping**:处理器映射器,根据URL路径找到对应的...
01、Spring Boot之Hello World_高清.mp4 02、spring boot返回json数据_高清.mp4 03、Spring Boot完美使用FastJson解析JSON数据_高清.mp4 04、Spring Boot热部署(springloader)_高清.mp4 05、springboot + ...
这个"struts-2.3.16.3_01.rar"是Struts 2框架的一个特定版本,版本号为2.3.16.3,它需要通过下载并合并五个.rar文件来获得完整的框架资源。 在描述中提到,用户需要下载1到5个.rar文件并全部解压缩,这通常是因为...
本工程旨在演示Servlet和FreeMarker的使用。 本工程编码方式:UTF-8 查看相应博客:http://blog.csdn.net/gaohuanjie/article/details/36676799
<#assign lastUpdated = "2009-01-07 15:05"?datetime("yyyy-MM-dd HH:mm") /> ${lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")}; ${lastUpdated?string("EEE,MMM d,yy")}; ${lastUpdated?string("EEEE,MMMM dd,...
《深入解析Java编程:以A_01_InstaReport_44为例》 在IT领域,Java作为一种广泛使用的编程语言,始终保持着其强大的影响力。本文将以"A_01_InstaReport_44"为例,深入探讨Java编程中的关键知识点,帮助读者深化对...
- **创建模板文件**:在`resources/templates`目录下创建模板文件,例如`01-basic.ftl`,并在其中编写包含插值表达式的HTML代码。 ```html <!DOCTYPE html> <title>Hello World Example <h1>Hello ${name}!...
同时,Struts2支持多种视图技术,如JSP、FreeMarker等,使得开发者可以根据需求选择合适的视图层实现。 **Spring** 框架是SSH的核心,它提供DI和AOP功能,帮助管理对象的生命周期和依赖关系。在SSH中,Spring作为...
部分内容中提到的“发布日期:2017年10月01日”表明了文档的正式对外公开时间,这在项目管理、内容发布或者公告发布等场景中非常重要,因为它决定了信息的时效性。 综合以上信息,我们可以理解这个文档可能是一个在...