静态资源导入的相关源码在:自动配置类 WebMvcAutoConfiguration
中的 addResourceHandlers 方法。
注意:参数 pattern 和 location 相对应,根据 url 路径可以访问到项目中指定路径的静态资源。
说明:默认有两种方式可以处理(找到)静态资源:
/**
;classpath:/META-INF/resources/
;classpath:/resources/
;classpath:/static/
;classpath:/public/
。可以发现,在类路径下可以创建 resources、static、public 文件夹放置静态资源,在 url 中输入文件名就可进行访问。
背景:
现在 Spring Boot 项目是不支持 jsp 的,因为项目打包方式为 jar,并且 Tomcat 服务器为嵌入式的;
不支持 jsp 页面,如果直接用纯静态的页面,将不利于开发,因此 Spring Boot 推荐使用 Thymeleaf 模板引擎;
模板引擎种类有很多,例如有 jsp、Thymeleaf、freemarker 等等,作用都是可以将数据进行解析,填充到指定的位置。
Thymeleaf 官网:点此进入。
使用 Thymeleaf 模板引擎需要导入启动器:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>2.7.11</version>
</dependency>
打开 Thymeleaf 的自动配置类和属性配置类,可以看到 Thymeleaf 模板引擎需要放到类路径下的 templates 目录下,并且后缀为 html
在 templates 目录下的所有页面,只能通过 controller 来跳转
在头文件中导入约束:xmlns:th="http://www.thymeleaf.org"
具体表达式和语法见 Thymeleaf 的官方参考文档:表达式点此进入、语法点此进入。
所有的 html 元素都可以使用 th + 元素名
来让 Thymeleaf 替换接管
运行
扩展 SpringMVC 配置的方法:
注意:
- 注册的 bean 的 id 为方法名,class 为返回值的类型;
- Spring Boot 在自动装配组件时,用户自己配置的组件会优先装配,如果没有,则使用默认配置的。
总结:在 Spring Boot 中有非常多的 xxxConfiguration
配置类,作用是在自动配置类的基础上进行扩展配置(增加配置或修改配置)。
补充:扩展 SpringMVC 配置不能加注解 @EnableWebMvc 声明,原因如下:
注解 @EnableWebMvc 的作用是导入了 DelegatingWebMvcConfiguration
类,该类继承了 WebMvcConfigurationSupport
类
而 WebMvc 自动配置类 WebMvcAutoConfiguration
生效的条件之一就是:不导入 WebMvcConfigurationSupport
类
加了注解 @EnableWebMvc 就会使得 WebMvc 自动配置类 WebMvcAutoConfiguration
失效。
Ctrl + Shift + -
,单个方法折叠:Ctrl + -
,展开方法用 +
代替 -
;Shift + Shift
,在类中查找:Ctrl + F
;