`

freemark小试

阅读更多
1. 工程结构




设置模板: product.ftl

<html>
	<head>
		<title>Welcome!</title>
	</head>
	<body>
		<h1>Welcome!${username}</h1>
	</body>
</html>




2. 配置: TemplateService.java

package test;

import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
import java.net.URI;
import java.net.URISyntaxException;

import freemarker.template.Configuration;
import freemarker.template.ObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;

public class TemplateService {

	private static Configuration configuration = null; 
	public static String format(String ftlTemplate, Object contents) throws IOException, TemplateException, URISyntaxException{
		if(configuration == null){
			configuration = new Configuration();
		// 必须使用URI,否则setDirectoryForTemploateLoading()方法会报无法识别目录
		// 不使用URI,返回类型为URL: 
		//file:\D:\EclipseWorkSpace\work\ftl\WebRoot\WEB-INF\classes\script
		// 使用URI: 
		//D:\EclipseWorkSpace\work\ftl\WebRoot\WEB-INF\classes\script
		// getContextClassLoader().getResource("")与TemplateService.class.getResource("")区别就是一个test包路径
		// 设置模板目录
	configuration.setDirectoryForTemplateLoading(new File(new URI(Thread.currentThread().getContextClassLoader().getResource("") + "script")));
			configuration.setDefaultEncoding("UTF-8");
			
			configuration.setObjectWrapper(ObjectWrapper.DEFAULT_WRAPPER);		// ★
		}
		
		// 获得freemarker模板
		Template template = configuration.getTemplate(ftlTemplate);
		
		Writer out = new StringWriter();
		
		template.process(contents, out); 
		
		out.flush();
		
		out.close();
		
		return out.toString();
	}




// 如果要在TemplateService.java中测试URL与URI,可以在Loading()之前加上一下代码

System.out.println(new File(Thread.currentThread().getContextClassLoader().getResource("") + "script"));
System.out.println(new File(Thread.currentThread().getClass().getResource("") + "script"));
System.out.println(new File(TemplateService.class.getResource("") + "script"));
System.out.println(new File(new URI(Thread.currentThread().getContextClassLoader().getResource("") + "script")));



3. 调用输出: Test01.java


package test;

import java.util.HashMap;
import java.util.Map;

public class Test01 {
	
	public static void main(String[] args) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("username", "fantasy");
		
		try {
			System.out.println(TemplateService.format("product.ftl", params));
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
}




4. 输出结果

<html>
	<head>
		<title>Welcome!</title>
	</head>
	<body>
		<h1>Welcome!fantasy</h1>
	</body>
</html>



  • 大小: 8.3 KB
分享到:
评论

相关推荐

    Freemark标签

    主要介绍了freemark标签的相关基础知识,基本上了解Freemark标签的应用

    freemark资料及eclipse的freemark插件

    标题中的"freemark资料及eclipse的freemark插件"表明我们将讨论关于FreeMarker的学习资源以及如何在Eclipse中使用FreeMarker插件进行开发。 FreeMarker的核心概念包括模板、数据模型和配置。模板是HTML或者其他文本...

    FreeMark Jar包 包括 中文 官方文档

    这个压缩包包含的是FreeMark的中文官方文档,对于理解和使用FreeMark非常有帮助。 "FreeMarker_2.3.23_Manual_zh_CN.chm" 是FreeMark的2.3.23版本的中文帮助文档,通常以CHM(Microsoft Compiled HTML Help)格式...

    freemark开发指南(入门)

    FREEMARK资料,开发入门指南 是开发人员了解FREEMARK的一本入门资料

    Freemark指南

    ### Freemark指南知识点详解 #### 一、概览 **Freemark**是一种强大的模板引擎,主要用于将数据模型与表示层分离。它通过一种简洁而强大的语法来实现动态内容的渲染,使得开发者能够更加灵活地控制页面布局和内容...

    Freemark模板使用

    本教程适用于初学者,旨在快速引导你掌握Freemark的基本使用方法。我们将通过几个关键步骤来理解并实践如何在Java环境中配置和使用Freemark。 首先,你需要在项目中引入Freemark的库文件。在这个例子中,我们导入了...

    实现FreeMark读取模板生成HTML

    在描述中提到的“实现FreeMark读取到json数据”,意味着你可能需要将JSON对象转换为FreeMarker的数据模型。这可以通过使用Jackson或Gson等库来实现。例如,如果你有一个JSON字符串: ```json { "name": "张三", ...

    freemark 资料学习

    在你提供的资料中,"freemark中文资料"和"freemark教程"是学习的关键。它们可能包含了Freemarker的基本概念解释、实例演示、常见问题解答等。"freemark基础和高级教程"则更深入地讲解了Freemarker的各种特性,是进阶...

    freemark开发指南详解

    本篇将深入讲解Freemarker的开发指南,帮助你更好地理解和使用这一工具。 1. **Freemarker基础概念** - **模板语言**:Freemarker使用的是基于文本的模板语言,它不包含任何编程语法,而是通过简单的标记来控制...

    freemark

    freemark资料

    freemark制定excel下载模板示例

    当下载的excel格式内容比较复杂时,用程序生成excel文件就显得力不从心。这时采用excel模板化,更加便捷高效。本资源基于springboot+freemark模板做的示例。只需要了解下freemark基本语法即可。

    Freemark基础入门+深入

    相比Velocity,Freemarker提供了更多高级特性,如过程调用、递归和闭包回调,使其能处理复杂的逻辑和数据操作。这篇文章将引导你从基础开始了解并深入探索Freemarker。 1. **基本语法** Freemarker使用特定的语法...

    freemark 生成静态页面

    在这个项目中,我们讨论的是如何利用FreeMarker来生成静态页面。 首先,要理解FreeMarker的工作原理。...这使得我们可以灵活地构建动态网页,同时保持页面源码的清晰和可读性。 在给定的项目中,我们看到`...

    springboot+mybaits+freemark+mysql

    springboot 集成mybits mysql和freemark模板引擎demo,本demo在mybaits中sql用到springboot默认注解sql以及spring的mapping映射*.xml 两种方式,而且配置操作日志(sql打印)

    Struts2+Freemark

    在"Struts2+Freemark 做到一个例子"中,你可能会看到以下的实践步骤: 1. 创建Action类并实现相关业务逻辑。 2. 编写FreeMarker模板文件(通常以`.ftl`为扩展名),定义视图布局和数据展示方式。 3. 在Struts2配置...

    freemark_java_test.rar_freeMark ja_freemark_java freemark

    这个“freemark_java_test.rar”压缩包包含了与FreeMarker相关的示例源码,用于演示如何在Java项目中有效利用FreeMarker模板语言。 FreeMarker的核心概念是模板和数据模型。模板是HTML、XML或其他格式的静态文本,...

    freemark模板&模版技术

    FreeMarker 是一个强大的、开源的模板引擎,常用于生成动态Web内容。它允许开发者使用简单的模板语言(Template Language)来分离应用逻辑与展示层,使得前端设计和后端开发可以独立进行,提高了开发效率和代码的可...

    freemark 自定义标签 总结

    自定义标签是Freemarker的一个重要特性,它允许开发者扩展模板语言的功能,以满足特定项目的需求。本篇文章将对Freemarker自定义标签进行深入的总结。 1. **自定义标签基础** 自定义标签在Freemarker中被称为`...

Global site tag (gtag.js) - Google Analytics