3.Springboot(三)

静态资源

搜索webMvcConfiguration看源码,找到addResourceHandlers方法,添加静态资源

public void addResourceHandlers(ResourceHandlerRegistry registry) {
            if (!this.resourceProperties.isAddMappings()) {
                logger.debug("Default resource handling disabled");
            } else {
                Duration cachePeriod = this.resourceProperties.getCache().getPeriod();
                CacheControl cacheControl = this.resourceProperties.getCache().getCachecontrol().toHttpCacheControl();
                if (!registry.hasMappingForPattern("/webjars/**")) {
                    this.customizeResourceHandlerRegistration(registry.addResourceHandler(new String[]{"/webjars/**"}).addResourceLocations(new String[]{"classpath:/META-INF/resources/webjars/"}).setCachePeriod(this.getSeconds(cachePeriod)).setCacheControl(cacheControl).setUseLastModified(this.resourceProperties.getCache().isUseLastModified()));
                }

                String staticPathPattern = this.mvcProperties.getStaticPathPattern();
                if (!registry.hasMappingForPattern(staticPathPattern)) {
                    this.customizeResourceHandlerRegistration(registry.addResourceHandler(new String[]{staticPathPattern}).addResourceLocations(WebMvcAutoConfiguration.getResourceLocations(this.resourceProperties.getStaticLocations())).setCachePeriod(this.getSeconds(cachePeriod)).setCacheControl(cacheControl).setUseLastModified(this.resourceProperties.getCache().isUseLastModified()));
                }

            }
        }

由以上代码可以看出添加静态资源由三种方式:

  • 方式一:
    • 在application.properties中自定义静态资源文件路径,当自定义静态资源的路径之后,系统自带的配置文件的路径就失效了
spring.mvc.static-path-pattern=/cdl/...
  • 方式二

    • 使用 webjars,然后去webjars官网查找相关的静态资源的maven配置,然后通过路径/webjars/**访问,
      3.Springboot(三)
  • 方式三
    可以看出只要是在resources包下面的都可以直接访问到
    3.Springboot(三)
    3.Springboot(三)

3.Springboot(三)

首页定制和图标定制

3.Springboot(三)

在resource文件夹下面,任意路径定义一个index.html就可以通过local+端口号访问到改也买你,不用加路径

在resources文件加下定义favicon.ico文件,然后在配置文件关闭默认图标即可,

spring.mvc.favicon.enabled = false 

thymeleaf 模板引擎 freemark

1.导入thymeleaf的spingboot启动器

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

2.在templates文件夹下新建html文件,并导入thymeleaf依赖

<html lang="en"  xmlns:th="http://www.thymeleaf.org">

3.编写测试类

@Controller
public class TestController {

    @RequestMapping("/t1")
    public String test1(Model model){
        model.addAttribute("msg","Hello,Thymeleaf");
        return "test";
    }
}
<!DOCTYPE html >
<html lang="en"  xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>测试页面</h1>

<!--th:text就是将div中的内容设置为它指定的值,和之前学习的Vue一样-->
<div th:text="${msg}"></div>
</body>
</html>

thymeleaf模板语法
3.Springboot(三)

MVC配置原理

使用一个类全面扩展springMVC
1.在包下新建一个文件夹,config
2.在文件夹下新建一个类,例如:myMvcConfig
3.添加注解@configuration,然后实现webMvcConfigurer接口(可以发现下面有很多可以重写的方法)


如果想要定制一些功能,只要写一个组件,然后交给springboot,springboot就会帮我们自动装配

例如:定制一个视图解析器

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {

    //实现类视图解释器接口,可以看做就是一个视图解析器
    @Bean
    public ViewResolver myViewResolver(){
        return new MyViewResolver();
    }

    //自定义一个视图解析器
    public static class MyViewResolver implements ViewResolver {
        @Override
        public View resolveViewName(String s, Locale locale) throws Exception {
            return null;
        }
    }
}

扩展SpingMVC

接管mvc的功能
例如:请求直接跳转页面

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("test");
    }
}
上一篇:ios视频播放


下一篇:Freemarker源码分析(3)cache.CacheStorage及其子类