Freemarker是什么
FreeMarker是一种基于模板的Java框架,用于生成各种类型的文本输出,如HTML、XML、邮件等。它提供了丰富的模板语法和功能,支持条件语句、循环语句、变量赋值等,使开发人员能够轻松地生成动态内容。
下面是FreeMarker的一些主要特性和用法:
强大的模板语法:FreeMarker提供了一套简洁而灵活的模板语法,使用标签和指令来控制模板的行为。例如,你可以使用
${variable}
来插入变量,使用<#if condition>...</#if>
来进行条件判断,使用<#list items as item>...</#list>
来进行循环遍历等。数据模型:FreeMarker使用数据模型来提供动态内容。数据模型是一个Java对象,可以包含各种属性和方法。在模板中,你可以通过访问数据模型的属性和调用方法来获取和操作数据。
内置工具和函数:FreeMarker提供了丰富的内置工具和函数,用于处理和转换数据。例如,你可以使用内置的字符串处理函数、日期时间函数、数学函数等来操作数据。
模板继承和片段:FreeMarker支持模板继承,使你可以创建一个基础模板,并在子模板中继承和重写基础模板的内容。这种方式可以实现模板的重用和模块化。
自定义指令和函数:FreeMarker允许你编写自定义指令和函数来扩展模板语法和功能。通过编写Java类和注册自定义指令/函数,你可以在模板中使用自定义的逻辑和操作。
多种输出格式支持:FreeMarker支持生成多种类型的文本输出,包括HTML、XML、纯文本等。你可以根据需要选择适合的输出格式,并使用相应的模板语法和功能。
SpringBoot与Freemarker的整合
在Spring Boot中,你可以使用FreeMarker作为模板引擎来生成动态内容。下面是将Spring Boot与FreeMarker整合的步骤:
添加依赖:在
pom.xml
文件中添加FreeMarker的Spring Boot依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>
配置FreeMarker:Spring Boot会自动配置FreeMarker,你可以在
application.properties
或application.yml
文件中添加自定义配置。以下是一些常见的配置项:# 设置FreeMarker模板文件的位置,默认为classpath:/templates/ spring.freemarker.template-loader-path=classpath:/templates/ # 设置FreeMarker模板文件的后缀,默认为.ftl spring.freemarker.suffix=.ftl
创建FreeMarker模板文件:在指定的模板文件夹中创建FreeMarker模板文件,例如
src/main/resources/templates/
目录下。模板文件的后缀通常为.ftl
。创建控制器:创建一个控制器类,并使用
@Controller
注解和@RequestMapping
注解定义请求处理方法。在方法中,通过Model
对象将数据传递给模板。@Controller public class SampleController { @RequestMapping("/hello") public String hello(Model model) { model.addAttribute("message", "Hello, World!"); return "hello"; } }
在上述示例中,
Model
对象用于传递数据到模板中。addAttribute()
方法将message
属性添加到模型中,并将其值设置为"Hello, World!"。创建模板文件:在模板文件夹中创建一个名为
hello.ftl
的FreeMarker模板文件。在模板文件中使用FreeMarker的语法和占位符来引用传递的数据。<!DOCTYPE html> <html> <body> <h1>${message}</h1> </body> </html>
在上述示例中,
${message}
表示从模型中获取名为message
的属性,并将其值插入到模板中。运行应用程序:使用Spring Boot的内置服务器运行应用程序。访问
/hello
路径将触发hello()
方法,并返回生成的HTML页面。