Spring Boot 快速上手(八)集成Thymeleaf
2017-11-29 14:11
756 查看
SpringBoot服务的启动,依靠的是其内嵌的Servlet容器,如Tomcat或Jetty等,而且通常会以jar的形式运行服务,这会导致运行JSP时出现异常。除了JSP,在SpringBoot中还有更好的选择,那就是Thymeleaf。
ace7
es文件中配置,此处选择使用默认设置。
在模板文件index01.html的<body></body>内追加如下内容:
其中,th:each用来循环迭代model。
重启SpringBoot服务,浏览器中访问http://localhost:8080/student/show02,页面显示如下:
点击获取信息,页面弹窗如下:
1.新建Maven项目
①.创建项目
新建Maven项目spring-thymeleaf,项目结构如下:②.pom依赖
spring-thymeleaf项目的pom.xml内容如下:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>net.xxpsw.demo</groupId> <artifactId>spring-thymeleaf</artifactId> <version>0.0.1-SNAPSHOT</version> <name>Spring Boot Thymeleaf</name> <description>Spring Boot Thymeleaf</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.7.RELEASE</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>此处的依赖仅使用了spring-boot-starter-thymeleaf,它包含了spring-boot-starter-web。
③.参数配置
SpringBoot中Thymeleaf配置参数的包路径是org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties,该类基本结构如下:@ConfigurationProperties(prefix = "spring.thymeleaf") public class ThymeleafProperties { private static final Charset DEFAULT_ENCODING = Charset.forName("UTF-8"); private static final MimeType DEFAULT_CONTENT_TYPE = MimeType.valueOf("text/html"); public static final String DEFAULT_PREFIX = "classpath:/templates/"; public static final String DEFAULT_SUFFIX = ".html"; // Check that the template exists before rendering it (Thymeleaf 3+). private boolean checkTemplate = true; // Check that the templates location exists. private boolean checkTemplateLocation = true; // Prefix that gets prepended to view names when building a URL. private String prefix = DEFAULT_PREFIX; // Suffix that gets appended to view names when building a URL. private String suffix = DEFAULT_SUFFIX; // Template mode to be applied to templates. See also StandardTemplateModeHandlers. private String mode = "HTML5"; // Template encoding. private Charset encoding = DEFAULT_ENCODING; // Content-Type value. private MimeType contentType = DEFAULT_CONTENT_TYPE; // Enable template caching. private boolean cache = true; // Enable MVC Thymeleaf view resolution. private boolean enabled = true; }由ThymeleafProperties类可知,Thymeleaf参数配置项的前缀是spring.thymeleaf,并且某些参数项已配置了默认值,如默认的模板模式是HTML5,默认的模板编码是UTF-8,默认的模板文件后缀是.html,默认的模板文件存放路径是classpath:/templates/,默认开启模板缓存等。如果需要更改这些参数,可在application.properti
ace7
es文件中配置,此处选择使用默认设置。
2.Thymeleaf模板
①.静态文件
为了方便演示,这里使用了bootstrap和jquery,当然,这些静态文件不是必须的,可根据实际情况选择,静态文件统一放置在resources下的static目录中,添加完成后的结构如下:②.页面模板
在classpath:/templates/下新建模板文件index01.html,文件内容如下:<html xmlns:th="http://www.thymeleaf.org"> <head> <meta content="text/html;charset=UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width,initial-scale=1" /> <link th:href="@{/bootstrap/3.3.1/css/bootstrap.min.css}" rel="stylesheet" /> <link th:href="@{/bootstrap/3.3.1/css/bootstrap-theme.min.css}" rel="stylesheet" /> </head> <body> </body> </html>在上面的文件中,xmlns:th="http://www.thymeleaf.org"指定了命名空间,可以将镜头页面转换为动态的视图;而@{}用来引用静态资源。
3.数据展示
①.新建控制类
新建实体类Student如下:package net.xxpsw.demo.springboot.thymeleaf.student; public class Student { /** ID */ private Long id; /** 姓名 */ private String name; /** 年龄 */ private Integer age; /** 国籍 */ private String nat; public Student() { super(); } public Student(Long id, String name, Integer age, String nat) { super(); this.id = id; this.name = name; this.age = age; this.nat = nat; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getNat() { return nat; } public void setNat(String nat) { this.nat = nat; } }新建控制类StudentController如下:
package net.xxpsw.demo.springboot.thymeleaf.student; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("student") public class StudentController { }
②.展示model信息
在控制类StudentController中添加如下方法:@RequestMapping("show01") public String show01(Model model) { model.addAttribute("student", new Student(1L, "Jack", 27, "China")); return "index01"; }该方法中Model的包路径为org.springframework.ui.Model。
在模板文件index01.html的<body></body>内追加如下内容:
<div class="panel panel-primary"> <div class="panel-heading"> <h3 class="panel-title">Student:</h3> </div> <div class="panel-body"> <table class="table table-hover"> <tr> <th>ID</th> <th>姓名</th> <th>年龄</th> <th>国籍</th> </tr> <tr> <td th:text="${student.id}"></td> <td th:text="${student.name}"></td> <td th:text="${student.age}"></td> <td th:text="${student.nat}"></td> </tr> </table> </div> </div>启动SpringBoot服务,浏览器中访问http://localhost:8080/student/show01,页面显示如下:
③.展示列表信息
在控制类StudentController中添加如下方法:@RequestMapping("show02") public String show02(Model model) { List<Student> students = new ArrayList<>(); students.add(new Student(2L, "Mike", 24, "USA")); students.add(new Student(3L, "Ice", 26, "UK")); model.addAttribute("students", students); return "index02"; }在classpath:/templates/下复制index01.html至index02.html,修改<body></body>内容为:
<div class="panel panel-primary"> <div class="panel-heading"> <h3 class="panel-title">Students:</h3> </div> <div class="panel-body"> <table class="table table-hover"> <tr> <th>ID</th> <th>姓名</th> <th>年龄</th> <th>国籍</th> </tr> <tr th:each="student:${students}"> <td th:text="${student.id}"></td> <td th:text="${student.name}"></td> <td th:text="${student.age}"></td> <td th:text="${student.nat}"></td> </tr> </table> </div> </div>
其中,th:each用来循环迭代model。
重启SpringBoot服务,浏览器中访问http://localhost:8080/student/show02,页面显示如下:
④.在javascript中访问model
在控制类StudentController中添加如下方法:@RequestMapping("show03") public String show03(Model model) { model.addAttribute("student", new Student(4L, "Geoff", 29, "France")); return "index03"; }在classpath:/templates/下复制index01.html至index03.html,修改<body></body>内容为:
<button class="btn" th:onclick="'getMsg()'">获取信息</button> <script type="text/javascript" th:src="@{/jquery-1.11.3.min.js}" /> <script th:src="@{/bootstrap/3.3.1/js/bootstrap.min.js}" /> <script th:inline="javascript"> function getMsg(){ var s = [[${student}]]; alert('ID:' + s.id + ' | 姓名:' + s.name + ' | 年龄:' + s.age + ' | 国籍:' + s.nat); } </script>重启SpringBoot服务,浏览器中访问http://localhost:8080/student/show03,页面显示如下:
点击获取信息,页面弹窗如下:
相关文章推荐
- Spring Boot 快速上手(七)集成ActiveMQ
- spring boot +Thymeleaf+mybatis 集成通用PageHelper,做分页
- Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(一)Spring Boot介绍
- Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(一)Spring Boot介绍
- Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(二)搭建SpringBoot工程
- Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(四)构建前端
- Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(一)Spring Boot介绍
- Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(一)Spring Boot介绍
- Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(二)搭建SpringBoot工程
- Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(五)源码下载地址以及总结
- Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(一)Spring Boot介绍
- Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(二)搭建SpringBoot工程
- spring boot 1.4.2.RELEASE+Thymeleaf+mybatis 集成通用maper,与分页插件:
- Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(一)Spring Boot介绍
- Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(二)搭建SpringBoot工程
- Spring Boot与Thymeleaf集成
- Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(一)Spring Boot介绍
- Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(二)搭建SpringBoot工程
- spring boot 快速集成 mybatis
- Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(一)Spring Boot介绍