JSP 必须依赖Tomcat运⾏,不能直接运⾏在浏览器中
HTML可以直接运⾏在浏览器中,但是不能接收控制器传递的数据
Thymeleaf是⼀种既保留了HTML的后缀能够直接在浏览器运⾏的能⼒、⼜实现了JSP显示动态数据的功能——静能查看⻚⾯效果、动则可以显示数据
2. Thymeleaf应用 2.1 添加thymelea的starter在springboot不需要指定版本,内置有版本
2.2 创建thymelea模板 Thymeleaf 模板就是 HTML ⽂件 SpringBoot 应⽤中 resourcestemplates ⽬录就是⽤来存放⻚⾯模板的 2.2.1重要说明: static ⽬录下的资源被定义静态资源, SpringBoot 应⽤默认放⾏;如果将 HTML ⻚⾯创建 static ⽬录是可以 直接访问的 templates ⽬录下的⽂件会被定义为动态⽹⻚模板, SpringBoot 应⽤会拦截 templates 中定义的资源;如果将 HTML⽂件定义在 templates ⽬录,则必须通过控制器跳转访问。 在 templates 创建 HTML ⻚⾯模板 创建 PageController ,⽤于转发允许 " 直接访问 " 的⻚⾯请求 2.2.2简单应用:org.springframework.boot spring-boot-starter-thymeleaf
@Controller
@RequestMapping("/book")
public class BookController {
@RequestMapping("/query")
public String queryBook(int bookId, Model model){
Book book = new Book(bookId, "java", "亮哥");
model.addAttribute("book",book);
return "test";
}
}
test.html
Title
test
在浏览器中输入:
http://localhost:8080/book/query?bookId=13 Thymeleaf基本语法 如果要在 thymeleaf 模板中获取从控制传递的数据,需要使⽤ th 标签 3.1 在thymeleaf模板⻚⾯引⼊th标签的命名空间
Title
test
3.2 th:text
在⼏乎所有的
HTML
双标签都可以使⽤
th:text
属性,将接收到的数据显示在标签的内容中
@Controller
@RequestMapping("/book")
public class BookController {
@RequestMapping("/query")
public String queryBook(int bookId, Model model){
Book book = new Book(bookId, "java", "亮哥");
List books = new ArrayList<>();
books.add(new Book(1,"java","亮哥1"));
books.add(new Book(2,"html","亮哥2"));
books.add(new Book(3,"c++","亮哥3"));
books.add(new Book(4,"python","亮哥4"));
//简单类型
model.addAttribute("price",3.22);
//字符串
model.addAttribute("str","Long Long ago...");
//对象
model.addAttribute("book",book);
//集合
model.addAttribute("books",books);
return "test";
}
}
Title
价格:
字符串:
图书名称:
3.3 th:inline 内联
3.3.1 HTML 内联
3.3.2 CSS内联图书名称:[[${book.bookName}]]
model.addAttribute("color","orange");
Title
价格:
字符串:
图书名称:[[${book.bookName}]]
重启刷新:变色成功
3.3.3 javaAcript内联和css内联差不多
3.3.4 th:object 和 *外层有th:object 内层就可以用*代表上层对象
4. 流程控制
4.1 th:each 循环
| 图书ID | 图书名称 | 图书作者 |
|---|---|---|
4.2.2 th:switch 和 th:case太贵!!! 推荐购买
5. 碎片使用 5.1 碎片的概念 碎⽚,就是 HTML ⽚段,我们可以将多个⻚⾯中使⽤的相同的 HTML 标签部分单独定义,然后通过 th:include 可以在HTML ⽹⻚中引⼊定义的碎⽚ 5.2 碎片使用案例 5.2.1 定义碎片 th:fragment
header.html
Title
头部测试,(~ ̄▽ ̄)~666!!
footer.html
Title
尾部测试,(~ ̄▽ ̄)~666!!
5.2.2 引用碎片 th:include和th:replace
a.html
Title
定义内容
Title
定义内容



