螺竹编程
发布于 2024-06-01 / 3 阅读
0

SpringBoot基础/静态模板与文件:SpringBoot与Freemarker

Freemarker是什么

FreeMarker是一种基于模板的Java框架,用于生成各种类型的文本输出,如HTML、XML、邮件等。它提供了丰富的模板语法和功能,支持条件语句、循环语句、变量赋值等,使开发人员能够轻松地生成动态内容。

下面是FreeMarker的一些主要特性和用法:

  1. 强大的模板语法:FreeMarker提供了一套简洁而灵活的模板语法,使用标签和指令来控制模板的行为。例如,你可以使用${variable}来插入变量,使用<#if condition>...</#if>来进行条件判断,使用<#list items as item>...</#list>来进行循环遍历等。

  2. 数据模型:FreeMarker使用数据模型来提供动态内容。数据模型是一个Java对象,可以包含各种属性和方法。在模板中,你可以通过访问数据模型的属性和调用方法来获取和操作数据。

  3. 内置工具和函数:FreeMarker提供了丰富的内置工具和函数,用于处理和转换数据。例如,你可以使用内置的字符串处理函数、日期时间函数、数学函数等来操作数据。

  4. 模板继承和片段:FreeMarker支持模板继承,使你可以创建一个基础模板,并在子模板中继承和重写基础模板的内容。这种方式可以实现模板的重用和模块化。

  5. 自定义指令和函数:FreeMarker允许你编写自定义指令和函数来扩展模板语法和功能。通过编写Java类和注册自定义指令/函数,你可以在模板中使用自定义的逻辑和操作。

  6. 多种输出格式支持:FreeMarker支持生成多种类型的文本输出,包括HTML、XML、纯文本等。你可以根据需要选择适合的输出格式,并使用相应的模板语法和功能。

SpringBoot与Freemarker的整合

在Spring Boot中,你可以使用FreeMarker作为模板引擎来生成动态内容。下面是将Spring Boot与FreeMarker整合的步骤:

  1. 添加依赖:在pom.xml文件中添加FreeMarker的Spring Boot依赖:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-freemarker</artifactId>
    </dependency>
    
  2. 配置FreeMarker:Spring Boot会自动配置FreeMarker,你可以在application.propertiesapplication.yml文件中添加自定义配置。以下是一些常见的配置项:

    # 设置FreeMarker模板文件的位置,默认为classpath:/templates/
    spring.freemarker.template-loader-path=classpath:/templates/
    # 设置FreeMarker模板文件的后缀,默认为.ftl
    spring.freemarker.suffix=.ftl
    
  3. 创建FreeMarker模板文件:在指定的模板文件夹中创建FreeMarker模板文件,例如src/main/resources/templates/目录下。模板文件的后缀通常为.ftl

  4. 创建控制器:创建一个控制器类,并使用@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!"。

  5. 创建模板文件:在模板文件夹中创建一个名为hello.ftl的FreeMarker模板文件。在模板文件中使用FreeMarker的语法和占位符来引用传递的数据。

    <!DOCTYPE html>
    <html>
    <body>
        <h1>${message}</h1>
    </body>
    </html>
    

    在上述示例中,${message}表示从模型中获取名为message的属性,并将其值插入到模板中。

  6. 运行应用程序:使用Spring Boot的内置服务器运行应用程序。访问/hello路径将触发hello()方法,并返回生成的HTML页面。