spring-boot-Web学习1-简介

1.使用Spring boot:

  1. 创建Spring boot的应用,选中我们需要的模块;
  2. Spring boot已经默认这些场景配置,只需要在配置文件中指定少量文件就可以运行起来;
  3. 自己编写业务代码;

需要我们对spring boot的自动配置原理非常熟悉,能够明白:

  • 这个场景下 spring boot 帮我们配置了什么?
  • 能不能修改这些自动配置?
  • 能修改哪些配置?
  • 能不能进行扩展?

 这些原理到哪里去找,要去:jar下的:

xxxxAutoConfiguration,帮我们在容器中配置相关组件;
xxxxProperties:配置类来封装配置文件的内容;

2.Spring boot对静态资源的映射规则

2.1查看源码,org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration

 

@ConfigurationProperties(prefix = "spring.resources", ignoreUnknownFields = false)
public class ResourceProperties implements ResourceLoaderAware, InitializingBean {
ResourceProperties :可以用来设置和静态资源有关的参数。比如说缓存时间;

 

 

 

@Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            if (!this.resourceProperties.isAddMappings()) {
                logger.debug("Default resource handling disabled");
                return;
            }
            Integer cachePeriod = this.resourceProperties.getCachePeriod();
            if (!registry.hasMappingForPattern("/webjars/**")) {
                customizeResourceHandlerRegistration(registry
                        .addResourceHandler("/webjars/**")
                        .addResourceLocations("classpath:/META-INF/resources/webjars/")
                        .setCachePeriod(cachePeriod));
            }
            String staticPathPattern = this.mvcProperties.getStaticPathPattern();
            if (!registry.hasMappingForPattern(staticPathPattern)) {
                customizeResourceHandlerRegistration(
                        registry.addResourceHandler(staticPathPattern)
                                .addResourceLocations(
                                        this.resourceProperties.getStaticLocations())
                                .setCachePeriod(cachePeriod));
            }
        }
  • 从上面源码中可以得到规则一:所有 /webjars/**,都去 classpath:/META-INF/resources/webjars/ 下找资源;

-webjars:以 jar 包的方式引入静态资源;

 -引入方式,可以通过 maven 的 pom.xml 文件引入 jar 包

    <!--引入Juery-webjars-->
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>jquery</artifactId>
            <version>3.4.1</version>
        </dependency>

                             -目录结构如下:

 

 访问静态资源的时候,只需要写 webjars 下面资源的名称即可;例如访问 jquery.js,我们需要这样写:http://localhost:8083/webjars/jquery/3.4.1/jquery.js

  •  规则二:/** 访问当前项目的任意资源(静态资源的文件夹),包括以下几种情况:
1."classpath:/META-INF/resources/"
2. "classpath:/resources/"
3."classpath:/static/"
4. "classpath:/public/"
5."/":当前项目的根路径

即可以访问项目中以下位置的静态资源文件:

 此时假如我们访问:localhost:8080/hai,就会去上面标注的静态资源文件夹里面去找

  •  规则三:欢迎页:静态资源文件夹下的所有 index.html 页面;被" /** "映射; 
public Resource getWelcomePage() {
        for (String location : getStaticWelcomePageLocations()) {
            Resource resource = this.resourceLoader.getResource(location);
            try {
                if (resource.exists()) {
                    resource.getURL();
                    return resource;
                }
            }
            catch (Exception ex) {
                // Ignore
            }
        }
        return null;
    }

此时我们输入 localhost:8083/ 后面不指定文件夹以及具体文件时,就会到以下五个文件夹中去寻找 Index.html 文件进行返回;

1."classpath:/META-INF/resources/"
2. "classpath:/resources/"
3."classpath:/static/"
4. "classpath:/public/"
5."/":当前项目的根路径

 

 

 

  •  规则四:所有的 **/favicon.ico 都是在静态资源文件夹 " /** "下找;

源码如下:

    @Bean
            public SimpleUrlHandlerMapping faviconHandlerMapping() {
                SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
                mapping.setOrder(Ordered.HIGHEST_PRECEDENCE + 1);
                mapping.setUrlMap(Collections.singletonMap("**/favicon.ico",
                        faviconRequestHandler()));
                return mapping;
            }

2.2手动修改静态资源映射的文件夹

 当然我们也可以不使用 spring boot 自身的静态资源文件夹,我可以自己配置静态资源文件夹的位置,配置方法如下:

  • 在 application.properties(或application.yaml)全局配置文件中加入如下配置:
spring.resources.static-locations=classpath:/hello/,classpath:/haibao/
  • 多个路径中间用逗号进行分隔;
  • 此时我们在访问 localhost:8083/

 

 可见无法访问;

  • 此时我们新建 hello 文件夹,将欢迎页置入;

 

 此時就恢复了首页的访问,可见我们的修改的静态资源路径已经生效; 

 

 

转载于:https://www.cnblogs.com/haibaowang/p/11495808.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值