对码当歌,猿生几何?

Spring Boot 学习笔记(四)——Web开发之Thymeleaf

项目结构

代码的部分不说了;
resources:
static下存放静态资源,templates下存放默认的模板配置路径?

Spring Web MVC框架

很迷,好像后续章节有详解。

静态文件

默认下Spring Boot从resources下的static或ServletContext根目录找静态资源:
/static
/public
/resources
/META-INF/resources
/templates
本质上是Spring MVC的ResourceHttpRequestHandler,所以可以继承?实现WebMvcConfigurerAdapter,然后重写addResourceHandlers方法改变静态资源路径。
还有打jar包的时候,src/main/webapp文件夹会被忽略,所以里面的资源文件就木有了。war包则可以。什么webjar?

模板引擎

FreeMarker
Groovy
Thymeleaf(官方推荐)
Mustache
官方不推荐使用jsp,反正我就不用了呗。
以上模板的默认路径都是:src/main/resources/templates
可以在模板引擎的配置属性中查询并修改这个路径。

Thymeleaf模板引擎

用于渲染XML/XHTML/HTML5。优势:不用启动整个web应用就可以显示模板页面。与Spring MVC的web框架集成作为web应用的引擎特别方便。
Spring MVC中@Controller中的方法可以直接返回模板名称,接下来Thymeleaf模板引擎会自动进行渲染

@Controller
@RequestMapping("/learn")
public class LearnResourceController {
    @RequestMapping("")
    public ModelAndView index(){
		 List<LearnResouce> learnList =new ArrayList<LearnResouce>();
         LearnResouce bean =new LearnResouce("官方参考文档","Spring Boot 
         learnList.add(bean);
	ModelAndView modelAndView = new ModelAndView("/index");//直接返回模板名字
	modelAndView.addObject("learnList", learnList);
	return modelAndView;
}

并且spring-boot-starter-thymeleaf就包含了spring-boot-starter-web。所以pom.xml中的就不用引入web依赖了。
下面这段就很牛逼了,行话叫:Thymeleaf做到了不破坏HTML自身内容的数据逻辑分离。

<tr th:each="learn : ${learnList}">
        <td th:text="${learn.author}">嘟嘟MD</td>
        <td th:text="${learn.title}">SPringBoot干货系列</td>
        <td><a th:href="${learn.url}" target="_blank">点我</a></td>
    </tr>