SpringBoot本来不应该关注这块,但是既然都学了,就看看吧
SpringBoot属于前后端分离的微服务框架,默认的模板引擎是thymeleaf,虽然也能支持JSP,但是比较麻烦,另外freemarker也是SpringBoot常用的模板引擎之一,只是听说效率还是不如thymeleaf。
thymeleaf可以很好的和SpringBoot集成,而且本身也包含了spring-boot-starter-web,不需要写版本,pom.xml文件里会自动添加parent结点。
引入依赖
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-thymeleafartifactId>
dependency>
另外,它本身也自动配置了常用的默认配置
spring:
thymeleaf:
cache: false
# 以下是默认配置
# prefix: classpath:/templates/
# suffix: .html
# mode: HTML5
# encoding: UTF-8
# content-type: text/html
后台接口
@GetMapping("/start")
public ModelAndView hello(ModelAndView model){
// templates下的文件名
model.setViewName("hello");
// 添加内容
model.addObject("name", "ThymeLeaf");
return model;
}
前端页面
<html lang="zh-CN" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>hellotitle>
head>
<body>
<h1 th:text="'Hello, ' + ${name}">h1>
body>
html>
一个基本的示例就结束了,当然,还有更复杂的用法,不过既然都做前后端分离了,我觉得前端的东西还是让专业的前端去做吧,如果实在有这方面需求的,也可以自行百度
<dependency>
<groupId>org.freemarkergroupId>
<artifactId>freemarkerartifactId>
<version>2.3.28version>
dependency>
freemarker:
cache: false
template-loader-path: classpath:/templates/ftl/
## Freemarker 配置
spring.freemarker.template-loader-path=classpath:/web/
spring.freemarker.cache=false
spring.freemarker.charset=UTF-8
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.request-context-attribute=request
spring.freemarker.suffix=.ftl
hello.ftl
<html lang="en">
<body>
<h1>Hello ${name}h1>
body>
html>
// freemarker
@GetMapping("/freemarker")
public String helloFreeMarker(Model model){
// 添加内容
model.addAttribute("name", "FreeMarker");
return "hello";
}
有几个需要说明的:
- 这里最好别用@RestController
,直接用@Controller
即可
- thymeleaf和freemarker同时使用的时候,最好别在同一个目录下,避免混淆,参考上面的配置,重新设置一下模板目录地址
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-thymeleafartifactId>
dependency>
<dependency>
<groupId>org.freemarkergroupId>
<artifactId>freemarkerartifactId>
<version>2.3.28version>
dependency>
spring:
thymeleaf:
cache: false
freemarker:
cache: false