1.常用的 Spring Boot 2.x 模板引擎和官方推荐案例
1)JSP(后端渲染,消耗性能)
Java Server Pages 动态网页技术,由应用服务器中的 JSP 引擎来编译和执行,再将生成的整个页面返回给客户端。优点是:可以写java代码、支持表达式语言(el、jstl)、内建函数。
但 JSP 本质上是 Servlet,它非常占用 JVM 内存。Java Web 官方推荐,但 Spring Boot 不推荐 https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-jsp-limitations
2)Freemarker
FreeMarker Template Language(FTL) 文件一般保存为 xxx.ftl。严格依赖 MVC 模式,不依赖 Servlet 容器(不占用JVM内存),支持内建函数
3)Thymeleaf (主推)
轻量级的模板引擎(负责逻辑业务的不推荐,解析 DOM 或者 XML 会占用多的内存)。可以直接在浏览器中打开且正确显示模板页面。直接是 html 结尾,可以直接编辑。
2.Spring Boot 整合模板引擎 freemarker
步骤1:引入 Freemarker 相关 maven 依赖
<!-- 引入freemarker模板引擎的依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>
步骤2:Freemarker 基础配置
# 是否开启thymeleaf缓存,本地为false,生产建议为true
spring.freemarker.cache=false
spring.freemarker.charset=UTF-8
spring.freemarker.allow-request-override=false
spring.freemarker.check-template-location=true
#类型
spring.freemarker.content-type=text/html
spring.freemarker.expose-request-attributes=true
spring.freemarker.expose-session-attributes=true
#文件后缀
spring.freemarker.suffix=.ftl
#路径
spring.freemarker.template-loader-path=classpath:/templates/
步骤3:新建 .ftl 文件
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1> ${setting.name} </h1> <h1> ${setting.domain} </h1> </body> </html>
步骤4:简单测试代码编写和访问
@Controller @RequestMapping("/freemaker") public class FreemakerController { @Autowired private ServerSettings setting; @GetMapping("hello") public String index(ModelMap modelMap){ modelMap.addAttribute("setting", setting); return "fm/index"; //不用加后缀,在配置文件里面已经指定了后缀 } }
3.Spring Boot 整合模板引擎 thymeleaf
官网地址:https://www.thymeleaf.org/doc/articles/thymeleaf3migration.html
步骤1:引入 thymeleaf 相关 maven 依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
步骤2:thymeleaf 基础配置
#开发时关闭缓存,不然没法看到实时页面
spring.thymeleaf.cache=false
spring.thymeleaf.mode=HTML5
#前缀
spring.thymeleaf.prefix=classpath:/templates/
#编码
spring.thymeleaf.encoding=UTF-8
#类型
spring.thymeleaf.content-type=text/html
#名称的后缀
spring.thymeleaf.suffix=.html
步骤3:新建 .html 文件
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> 模板引擎整合thymeleaf admin/info.html <h1 >测试内容,未加th表达式</h1> <h1 th:text="${setting.name}">测试内容</h1> </body> </html>
步骤4:简单测试代码编写和访问
@Controller @RequestMapping("/tyhmeleaf") public class ThymeleafController { @Autowired private ServerSettings setting; @GetMapping("hello") public String index(){ return "index"; //不用加后缀,在配置文件里面已经指定了后缀 } @GetMapping("info") public String admin(ModelMap modelMap){ modelMap.addAttribute("setting", setting); return "admin/info"; //不用加后缀,在配置文件里面已经指定了后缀 } }
注意:$表达式只能写在th标签内部
快速入门:https://www.thymeleaf.org/doc/articles/standarddialect5minutes.html