springboot学习,idea版本
springboot中访问静态资源

- 在创建的空的springboot项目中,编辑器自动默认创建我们可以看到的两个静态资源管理package,但是根据源码来看,其实还有很多存储静态资源访问的路径,且优先级还不同。
首先打开WebMvcAutoConfiguration.class文件,定位到添加静态资源管理这个函数即:
public void addResourceHandlers(ResourceHandlerRegistry registry) {
            if (!this.resourceProperties.isAddMappings()) {
                logger.debug("Default resource handling disabled");
            } else {
                this.addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
                this.addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {
                    registration.addResourceLocations(this.resourceProperties.getStaticLocations());
                    if (this.servletContext != null) {
                        ServletContextResource resource = new ServletContextResource(this.servletContext, "/");
                        registration.addResourceLocations(new Resource[]{resource});
                    }
                });
            }
        }
分析:
if (!this.resourceProperties.isAddMappings()) {
                logger.debug("Default resource handling disabled");
            }
首先判断是否自定义了静态资源路径,如果有,那么就返回。
 
 怎么自定义资源路径?往上找到,WebMvcProperties.class,点进去,就可以看到很多类的属性变量,我们在yaml文件中,对这些属性变量进行设置。同时,还有可以自定义资源路径。

 我们可以看到,这个箭头指定的路径,是根目录下的所有包路径。所以理论上可以随意设置,取名字存储静态资源,前提是在yaml文件中配置好。
2. Webjars方式导入静态资源
this.addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
以maven依赖的方式,导入我们的静态资源。访问webjars官网,以依赖的方式,导入pom.xml文件
 
 
 
 之后,我们在jar包管理中,展开jar包目录,就可以看到**/META-INF/resources/webjars/**下的静态资源,通过浏览器我们就可以访问了。
 
 
 
 
 途中的五个位置都支持,静态资源的访问。没有的文件夹,就可以自己创建。
 总结:
- 在springboot中,我们可以使用以下方式处理静态资源 
  - webjars localhost:8080/webjars/
- public,static,/**,resource, localhost:8080
 
- 优先级:resource>static(默认)>public
首页如何定制
在WebMvcAutoConfiguration.class文件中,定义了关于首页的定制代码,大致的意思是可以寻找我们所设置的静态路径下的设置的index.html文件,作为首页。
 
 源码设置的是寻找/**下的index.html。所以你理论上如果没有自定义设置,应该都可以访问到。
模板引擎
在springboot中,不支持jsp。需要引入模板引擎来访问页面。
 
 pom.xml文件中,引入thymeleaf的依赖
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
查询thymeleafProperties.class文件后,会发现文件定义了templates的访问路径,即期文件夹下的模板文件.html。所以以后我们将我们的html文件放到这个templates下即可。
 
 测试thymeleaf的语法:
@RequestMapping("/test")
    public String index(Model model){
        model.addAttribute("msg","hello,springboot!");
        return  "test";
    }
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
《所有的html元素都可以被thymeleaf替换接管,th: 元素名》
<!--<h1>test</h1>-->
<div th:text="${msg}"></div>
</body>
</html>

 可以看到值被取出了。
扩展springMVC(未学习完)
在springboot中,有非常多的XXXXConfiguration帮助我们进行扩展配置,只要看见了这个东西,我们就要注意了。










