SpringBoot解决动静态资源同名问题

本文介绍SpringBoot中静态资源的默认访问配置及自定义方法,包括如何修改静态资源的访问路径和前缀。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

静态资源访问

  • 静态资源目录

    类路径下:called /static (or /public or /resources or /META-INF/resources)

    按照要求建立文件夹
    在这里插入图片描述

    找几个图片放到静态文件夹中,用来测试使用
    在这里插入图片描述

    启动服务器之后,在浏览器中输入地址+静态资源文件名就可以访问
    在这里插入图片描述

    测试证明了,这些目录确实时SpringBoot提供的静态资源目录,没有骗人确实可以访问的到,只要静态资源放到当前目录类路径下指定的静态资源目录下,就可以访问

    访问:当前项目根路径/ + 静态资源名

    再来看官网的一句话,这句话的意思是,默认的访问地址,如果你想要修改,也可以,按照以下给出的修改参考

    By default, resources are mapped on /**, but you can tune that with the spring.mvc.static-path-pattern property. For instance, relocating all resources to /resources/** can be achieved as follows:

    Properties

    Yaml

    spring.mvc.static-path-pattern=/resources/**
    

    首先做个测试,测试如果动态资源和静态资源同名的情况下,访问到的应该是什么?在Controller包下新建HelloController类,进行访问sea.png时测试

    @RestController
    public class HelloController {
    
        @RequestMapping("/sea.png")
        public String hello(){
            return "find...find...find...";
        }
    }
    

    先看一下结果在说话
    在这里插入图片描述

    原理:静态映射/**

    所以这个请求流程就清晰了,请求进来之后,先去到Controller中看能不能处理,如果不能处理就把所有的请求转至到静态资源处理器,如果静态资源处理器也找不到,就返回404

  • 静态资源访问前缀

    默认是没有前缀的

    想要给它一个前缀,SpringBoot官方也给出了参考,就在上面那个,需要配置

    spring.mvc.static-path-pattern=/resources/**

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

    static-path-pattern: /res/** 意思就是前缀res/后的请求都是静态请求,再次访问的时候地址就应该是res/+访问资源名字

    localhost:8080/res/sea.png
    在这里插入图片描述

  • 改变默认的静态资源路径

    SpringBoot提供了默认的静态资源路径,如果你不想使用默认提供的,也可以自己配置

    spring:
    	resources:
    		static-localions: classpath:/staticdic/
    

    这个配置就是将静态资源的存放路径修改为了staticdic文件夹,就需要把所有的静态资源放置在此文件夹下

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牧码文

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值