Spring Boot整合Thymeleaf和FreeMarker模板

文章介绍了如何在SpringBoot项目中整合Thymeleaf和FreeMarker,包括添加依赖、配置模板引擎、设置ModelAndView以及编写对应的HTML或FTL模板。Thymeleaf作为默认模板引擎,其优势在于支持HTML原型和浏览器直接调试。FreeMarker的整合过程类似,只需替换依赖并修改模板扩展名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

虽然目前市场上多数的开发模式采用前后端分离的技术,视图层的技术在小一些的项目中还是非常有用的,所以一直也占有一席之地,如spring官方的spring.io等网站就是使用视图层技术实现的。

目前Spring Boot支持的较好的两个视图层模板引擎是Thymeleaf和FreeMarker,其中Thymeleaf是默认的模板引擎。

一、整合Thymeleaf

Thymeleaf支持HTML原型,可以直接在浏览器中查看页面样式,这对于调试是非常方便的,SpringBoot工程整合Thymeleaf只需要几个简单的步骤:

  1. 添加依赖
    	<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-web</artifactId>
    		</dependency>
    
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-thymeleaf</artifactId>
    		</dependency>
  2. 配置Thymeleaf
    Springboot中Thymeleaf默认的配置类为:ThymeleafAutoConfiguration,默认的模板以html格式存在于classpath:/templates目录下,如果要改变这些配置,可以在application.properties中修改,所有的配置以spring.thymeleaf为前缀:
    #是否启用thymeleaf,默认true
    spring.thymeleaf.enabled=true
    #是否开启缓存,默认true
    spring.thymeleaf.cache=true
    #检查模板是否存在,默认为true
    spring.thymeleaf.check-template=true
    #检查模板位置是否存在,默认为true
    spring.thymeleaf.check-template-location=true
    #开启EL编译器,默认为true
    spring.thymeleaf.enable-spring-el-compiler=true
    #配置模版的位置
    spring.thymeleaf.prefix=classpath:/templates/
    #配置模板的编码
    spring.thymeleaf.encoding=UTF-8
    #配置模版支持的类型,默认为HTML
    spring.thymeleaf.mode=HTML
    #配置模板文件的后缀,默认为.html
    spring.thymeleaf.suffix=.html
    #配置content-type
    spring.thymeleaf.servlet.content-type=text/html

    3.配置ModelAndView

   编写controller,返回一个ModelAndView,返回到页面上渲染的数据存储在ModelAndView中。

@Controller
@RequestMapping("/thymeleaf")
public class ThymeleafController {

    private class Student{
        private String name;

        private int age;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }

    @GetMapping("/students")
    public ModelAndView students(){
        List<Student> students = new ArrayList<>();
        Student student1 = new Student();
        student1.setName("Li Lei");
        student1.setAge(18);

        Student student2 = new Student();
        student2.setName("Han Meimei");
        student2.setAge(17);
        students.add(student1);
        students.add(student2);
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("students",students);
        modelAndView.setViewName("test");
        return modelAndView;

    }
}

4.编写template

在resources目录下创建templates文件,创建test.html,对应上面代码的viewName,填入以下内容:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Thymeleaf Testing</title>
</head>
<style>
    tr,td,th {border: 2px solid #ff4c6b;width: 200px;}
</style>
<body style="text-align:center;">
<table style="margin:200px auto;border: 2px solid #ff4c6b;">
    <tr>
        <td>姓名</td>
        <td>年龄</td>
    </tr>

    <tr th:each="student:${students}">
    <td th:text="${student.name}"></td>
        <td th:text="${student.age}"></td>
    </tr>
</table>
</body>
</html>

访问localhost:8080/thymeleaf/students得到以下页面:

二、整合FreeMarker

整合FreeMarker于Thymeleaf非常相似,springboot提供了一致的整合方案,所以你只需要将以上的步骤做一下修改:

1、添加依赖

将Thymeleaf依赖替换成FreeMarker依赖

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

2、修改模板

将原来建立的html模板改成.ftl模板,其余不变。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MCNU云原生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值