SpringBoot之web静态资源

静态资源目录

目录:
在主类的相同目录下,创建/static (or /public or /resources or /META-INF/resources这些包,然后把静态资源,图片,js这些,直接放入这些包中,就能被SpringBoot识别。
访问:
直接,当前项目根路径/ + 静态资源名,就能访问。
访问原理:
SpringBoot是使用,静态映射/**,来访问静态资源的,可以看到,底层原理就是解析静态资源包下的所有类型的文件。那么问题来了,如果Controller中配置了和静态资源中名称相同的控制器访问路径的话,会产生什么结果?
相同名称控制器问题:
答案就是,会先解析控制器,如果控制器中找不到,再解析静态资源。
常见问题:
因为web项目肯定是要配置过滤器的,那么,过滤器一般只是用来过滤控制器的,既然会先访问控制器再访问静态资源,那么,过滤器是有可能把静态资源过滤掉的。所以,为了避免这种情况,通常,静态资源的路访问路径并不使用根路径,也就是说,静态资源存放位置仍然可以不变,但是,可以自定义静态资源访问路径,这样,就能使静态资源绕过过滤器。
改变默认的静态资源访问路径:
这里用yaml格式,在静态资源访问路径前加上/res/

spring:
  mvc:
    static-path-pattern: /res/**

如果想改变SpringBoot识别静态资源的路径不是类路径,可以设置:
classpath表示类路径,类路径下的haha文件下,是新设置的SpringBoot识别静态资源的路径。

spring:
  resources:
    static-locations: [classpath:/haha/]

最后了解一下:
webjars
就是可以把前端资源以jar包形式导入项目。
欢迎页支持
两种欢迎页支持方式,第一,静态资源路径下 index.html,第二,用controller处理/index。
注意:
可以配置静态资源路径
但是不可以配置静态资源的访问前缀。否则导致 index.html不能被默认访问

spring:
#  mvc:
#    static-path-pattern: /res/**   这个会导致welcome page功能失效

  resources:
    static-locations: [classpath:/haha/]

为什么不可以使用静态资源访问前缀,是因为源码中写死了:/**

if (welcomePage.isPresent() && "/**".equals(staticPathPattern)) {
            //要用欢迎页功能,必须是/**
            logger.info("Adding welcome page: " + welcomePage.get());
            setRootViewName("forward:index.html");
        }

自定义 Favicon
favicon就是就是页面左上角的小图标。
favicon.ico 放在静态资源目录下即可。
但是,和上面欢迎页相同,也是可以配置静态资源路径,但是不可以配置静态资源的访问前缀。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值