SpringBoot(十二)

前言

在很多时候开发中我们不是使用jsp来传输数据,我们是使用模板引擎来传送数据,这样的好处是前后前可以并行开发,降低了前台和后台的耦合度,其中thymeleaf就是一个很好的模板引擎,在Spring Boot项目中运用thymeleaf我们只需要引入Spring-Boot自带的thymeleaf依赖。

内容

在Spring Boot中使用thymeleaf的具体步骤如下:
1.在pom.xml中引入thymeleaf依赖
2.在application.properties文件里面添加thymeleaf配置;如:(关闭thymeleaf缓存)
3.编写模板文件.html
4.编写访问模板文件controller

1.在pom.xml中引入thymeleaf依赖

在pom.xml加入thymeleaf的依赖:

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
2.在application.properties文件里面添加thymeleaf配置;如:(关闭thymeleaf缓存)

在开发中我们一般关闭thymeleaf缓存;

#########################################
###THYMELEAF (ThymeleafAutoConfiguration)          #######################################
#spring.thymeleaf.prefix=classpath:/templates/
#spring.thymeleaf.suffix=.html
#spring.thymeleaf.mode=HTML5
#spring.thymeleaf.encoding=UTF-8
# ;charset=<encoding> is added
#spring.thymeleaf.content-type=text/html 
# set to false for hot refresh
spring.thymeleaf.cache=false 
3.编写模板文件.html

编写模板文件src/main/resouces/templates/hello.html:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<title>thymeleaf</title>
</head>
<body>
hello world
</body>
</html>
4.编写访问模板文件controller
@Controller
@RequestMapping("/template")
public class TemplateController {

/**
 * 跳转页面不携带数据
 * @return
 */
@RequestMapping("/th")
public String helloThymeleaf(){
    return "hello";
}
/**
 * 返回页面并携带参数,注意向页面传递值时候哦用map的话,必须将map作为方法的参数,自己定义一个map返回的话是无效的
 * @return
 */
@RequestMapping("/th1")
public String helloThymeleaf1(Map<String,Object> map){
    map.put("hello","Hello Thymeleaf");
    return "hello";
}
}
5.测试

访问的时候后台输出以下错误:

org.xml.sax.SAXParseException: 元素类型 "meta" 必须由匹配的结束标记 "</meta>" 终止。
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203) ~[na:1.8.0_112]
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177) ~[na:1.8.0_112]
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400) ~[na:1.8.0_112]
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327) ~[na:1.8.0_112]

原因是thymeleaf必须的标签包含”/“结束:

"<meta charset="UTF-8"/>"改变成"<meta charset="UTF-8"/>"

访问:http://localhost:8081/template/th 输出结果:hello world

访问:http://localhost:8081/template/th1 输出结果:hello world Hello Thymeleaf