​SpringBoot整合freemarker、thymeleaf模版引擎

首先来介绍freemarker:freemarker是一个java模版引擎,基于模版生成文本输出的通用工具,纯java代码开发。一般我们认为freemarker的出现是为了代替jsp,除此之外它还可以在servlet容器外运行。还可以用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。

在pom.xml文件中导入依赖,由于SpringBoot默认支持freemarker模版引擎,所以在引入依赖时不需要添加版本号:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>1234复制代码类型:[java]

之后对freemarker进行配置:

spring:
  jackson:
 date-format: yyyy-MM-dd HH:mm:ss
 time-zone: GMT+8
  datasource:
 driver-class-name: com.mysql.cj.jdbc.Driver
 url: jdbc:mysql://localhost:3306/Family?useUnicode=true&characterEncoding=utf-8&useSSL=false
 username: root
 password: 123456
  freemarker:
 cache: false
 suffix: .ftl
 charset: UTF-8
 template-loader-path: classpath:/templates/1234567891011121314复制代码类型:[java]

spring.freemarker.cache:用来进行缓存配置

(开发阶段配置为false,生产阶段设置为true)

spring.freemarker.suffix:模版文件的后缀名

spring.freemarker.charset:文件的编码

spring.freemarker.template-loader-path:加载模版引擎的路径

在resources下面的templates文件中创建freemarker.ftl文件

在创建freemarker.ftl文件时,没有以创建ftl为后缀的选项,我们只需要创建一个freemarker.html文件,将它改名为freemarker.ftl即可。

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>宠物</title>

 <link rel="stylesheet" href="/webjars/bootstrap/css/bootstrap.min.css">
</head>
<body>
<div class="container">
 <table class="table">
  <tr>
   <td>名称</td>
   <td>种类</td>
  </tr>

  <#list pets as pets>
   <tr>
 <td>${pets.name}</td>
 <td>${pets.varieties}</td>
   </tr>
  </#list>
 </table>
</div>

<script src="/webjars/jquery/jquery.min.js "></script>
<script src="/webjars/bootstrap/js/bootstrap.min.js"></script>
</body>
</html>1234567891011121314151617181920212223242526272829复制代码类型:[java]

之后对TemplateController.java稍作修改:

package com.javafamily.familydemo.controller;import com.javafamily.familydemo.model.PetsVO;import com.javafamily.familydemo.service.PetsService;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import javax.annotation.Resource;import java.util.List;@Controller@RequestMapping("/template")public class TemplateController { @Resource
 PetsService petsService; @GetMapping("/freemarker")
 public String index(Model model) {

  List<PetsVO> pets = petsService.getAll();

  model.addAttribute("pets", pets);  return "freemarker";
 }
}123456789101112131415161718192021222324252627282930复制代码类型:[java]

执行代码,在浏览器访问http://localhost:8888/template/freemarker,得到结果:

下面来介绍thymeleaf模版引擎,首先要确定自己的IDEA种是否安装了thymeleaf插件(识别语法,增强开发体验)。

安装好插件后才能继续操作。

thymeleaf也是一个Java模板引擎,可以处理模版文件(HTML、XML、CSS、JAVASCRIPT),也可以作为静态模版来使用,是Java服务器端HTML5开发的理想选择。thymeleaf使用方法与freemarker非常相似。

首先在pom.xml中引入Thymeleafy依赖:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>1234复制代码类型:[java]

之后对配置文件进行修改:

spring:
  jackson:
 date-format: yyyy-MM-dd HH:mm:ss
 time-zone: GMT+8
  datasource:
 driver-class-name: com.mysql.cj.jdbc.Driver
 url: jdbc:mysql://localhost:3306/Family?useUnicode=true&characterEncoding=utf-8&useSSL=false
 username: root
 password: 123456
  thymeleaf:
 cache: false
 check-template-location: true
 enabled: true
 encoding: UTF-8
 excluded-view-names:
 mode: HTML5
 prefix: classpath:/templates/
 suffix: .html 123456789101112131415161718复制代码类型:[java]

spring.thymeleaf.cache:缓存配置

spring.thymeleaf.check-template-location:检查模版是否存在

spring.thymeleaf.enabled:是否启用MVCThymeleaf视图分辨率。

spring.thymeleaf.encoding:模版编码

spring.thymeleaf.excluded-view-names:从解析中排除的视图名称列表

spring.thymeleaf.mode/spring.thymeleaf.prefix/spring.thymeleaf.suffix:分别表示模版模式/存放路径/后缀

在resources下面的templates文件中创建thymeleaf.html文件

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
 <meta charset="UTF-8">
 <title>宠物</title>

 <link rel="stylesheet" href="/webjars/bootstrap/css/bootstrap.min.css">
</head>
<body>

<div class="container">
 <table class="table">
  <tr>
   <td>名称</td>
   <td>种类</td>
  </tr>

  <tr th:each="item : ${pets}">
   <td th:text="${item.name}"></td>
   <td th:text="${item.varieties}"></td>
  </tr>
 </table>
</div>

<script src="/webjars/jquery/jquery.min.js "></script>
<script src="/webjars/bootstrap/js/bootstrap.min.js"></script>

</body>
</html>123456789101112131415161718192021222324252627282930复制代码类型:[java]

然后稍微修改一下TemplateController:

package com.javafamily.familydemo.controller;import com.javafamily.familydemo.model.PetsVO;import com.javafamily.familydemo.service.PetsService;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import javax.annotation.Resource;import java.util.List;@Controller@RequestMapping("/template")public class TemplateController { @Resource
 PetsService petsService; @GetMapping("/thymeleaf")
 public String index(Model model) {

  List<PetsVO> pets = petsService.getAll();

  model.addAttribute("pets", pets);  return "thymeleaf";
 }
}123456789101112131415161718192021222324252627282930复制代码类型:[java]

完成代码的修改后执行代码,浏览器中输入http://localhost:8888/template/thymeleaf

得到想要的结果。

(0)

相关推荐