Springboot整合模板引擎之freemarker(七)

本文详细介绍了如何在SpringBoot应用中整合FreeMarker模板引擎,包括添加依赖、配置模板属性、创建FTL文件及编写Controller。通过示例展示了如何传递数据到模板并渲染输出,以及更多关于FreeMarker的基本配置选项。
摘要由CSDN通过智能技术生成

目录

一、简介

二、springboot如何整合freemarker

三、freemarker更多基本属性配置


一、简介

        FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。

        FreeMarker是免费的,基于Apache许可证2.0版本发布。其模板编写为FreeMarker Template Language(FTL),属于简单、专用的语言。需要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,主要用于如何展现数据, 而在模板之外注意于要展示什么数据。

二、springboot如何整合freemarker

1、引入pom

        <!--freemarker模板-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>

2、配置freemarker基本属性

spring:
  #模板引擎 freemarker
  freemarker:
    # 是否启用模板缓
    cache: false
    # 模板编码
    charset: UTF-8
    #设置ftl文件根路径
    template-loader-path: classpath:/templates
    #是否检查模板位置是否存在
    check-template-location: true
    #Content-Type value
    content-type: text/html
    #设定所有request的属性在merge到模板的时候,是否要都添加到model中
    expose-request-attributes: true
    #是否在merge模板的时候,将HttpSession属性都添加到model中
    expose-session-attributes: true
    #request-context为request
    request-context-attribute: request
    #文件后缀
    suffix: .ftl

3、准备前端ftl模板文件,工程目录如下:

4、index.ftl

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>freemarkerIndex</title>
</head>
<body>
这个是freemarker模板文件Index.ftl
</body>
</html>

5、center.ftl

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>center</title>
</head>
<body>
这个是freemarker模板文件center.ftl<br>
<b>${resource.name}</b><br>
<b>${resource.address}</b><br>
<b>${resource.phone}</b><br>
</body>
</html>

6、编写controller

package com.example.springbootdemo.controller.freemarker;

import com.example.springbootdemo.configuration.CompanyConfig;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.annotation.Resource;

@Controller
@RequestMapping("ftl")
public class FreemarkerController {

    @Resource
    private CompanyConfig companyConfig;

    @RequestMapping("/index")
    public String index(){
        return "freemarker/index";
    }

    @RequestMapping("/center")
    public String center(ModelMap map){
        map.put("resource", companyConfig);
        return "freemarker/center/center";
    }
}

注意:是 @Controller不是@RestController,否则返回的是文本body。CompanyConfig 类为资源配置类,可参考Springboot资源文件属性配置(五)_wzcwmhp的博客-CSDN博客

7、访问http://localhost:8080/ftl/index,结果如下:

8、访问http://localhost:8080/ftl/center ,结果如下:

        可以看到,通过ModelMap对象,可以向模板中传递对象并引用,类似于request的setAttribute方法的作用。

三、freemarker更多基本属性配置

#设置是否允许HttpServletRequest属性重写(隐藏)控制器生成同名的模型属性。
spring.freemarker.allow-request-override=false
#设置是否允许HttpSession属性重写(隐藏)控制器生成同名的模型属性。
spring.freemarker.allow-session-override=false
#启用模板缓存
spring.freemarker.cache=false
# 模板编码
spring.freemarker.charset=UTF-8
# 检查模板位置是否存在
spring.freemarker.check-template-location=true
# 内容类型值
spring.freemarker.content-type=text/html
# 启用mvc视图解决方案
spring.freemarker.enabled=true
# 是否将所有请求属性添加到与模板合并之前的模型中
spring.freemarker.expose-request-attributes=false
# 设置是否所有HttpSession属性应该与模板融合之前添加到模型
spring.freemarker.expose-session-attributes=false
# 设置是否公开一个由Spring的macro库使用RequestContext,在名为“springMacroRequestContext”。
spring.freemarker.expose-spring-macro-helpers=true
# 是否开启模板文件的热部署
spring.freemarker.prefer-file-system-access=true
# 视图前缀
spring.freemarker.prefix=
# Name of the RequestContext attribute for all views.
spring.freemarker.request-context-attribute=
# Well-known FreeMarker keys which will be passed to FreeMarker's Configuration.
spring.freemarker.settings.*=
# 视图的后缀
spring.freemarker.suffix=
# 模板路径配置,多个模板路径用分号分割
spring.freemarker.template-loader-path=classpath:/templates/
# 视图解析的白名单
spring.freemarker.view-names=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值