相关推荐recommended
Springboot多种方法处理静态资源:设置并访问静态资源目录
作者:mmseoamin日期:2024-04-27
~目录嗷~
  • 静态文件
  • application设置方法
    • 配置详解
    • 编写配置
    • 优缺点
    • 设置配置类方法
      • 配置详解
      • 编写配置
      • 优缺点
      • 总结

        作者:Mintimate

        博客:https://www.mintimate.cn

        Mintimate’s Blog,只为与你分享

        静态文件

        静态资源,一般是网页端的:HTML文件、JavaScript文件和图片。尤其是设置图片的静态资源,尤其重要:

        Springboot多种方法处理静态资源:设置并访问静态资源目录,静态资源图片,第1张Springboot多种方法处理静态资源:设置并访问静态资源目录,静态资源图片,第2张这样的静态资源访问不会被Springboot所拦截处理(方便用于CDN加速):

        Springboot多种方法处理静态资源:设置并访问静态资源目录,Springboot日志并没有显示,第3张

        虽然真实项目里,图片可以直接存储在对象存储的存储桶内或者直接用Nginx进行反代,但是一些小的静态资源,直接Springboot规划静态资源,也是个不错的选择。

        Springboot内设置静态资源,或者说静态资源文件夹,主要有两种方法(均为SpringMVC实现):

        • 在application.yml/application.properties内配置。
        • 设置Configuration配置类。

          更多内容,可以参考Spring官方文档:https://www.baeldung.com/spring-mvc-static-resources

          以上两种方法,均可实现用户访问网址,不走Controller层的拦截,直接进行静态文件访问。

          application设置方法

          配置详解

          设置application方法很简单,主要涉及两个配置项:

          • spring.mvc.static-path-pattern:根据官网的描述和实际效果,可以理解为静态文件URL匹配头,也就是静态文件的URL地址开头。Springboot默认为:/**。
          • spring.web.resources.static-locations:根据官网的描述和实际效果,可以理解为实际静态文件地址,也就是静态文件URL后,匹配的实际静态文件。Springboot默认为:classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

            需要注意:

            • spring.web.resources.static-locations是后续配置,旧版Springboot的配置项为:spring-resources-static-locations;在2.2.5版本之后,旧版本配置已经失效。
            • spring.web.resources.static-locations有多个配置项,在Springboot编译后,会合并为一个文件。多个配置文件,使用,进行分割。
            • spring.web.resources.static-location仅仅允许一个配置,无法使用,进行分割,如果需要多个静态资源文件,可以使用下文的配置类方法。
            • spring.web.resources.static-locations可以使用classpath、file进行匹配。如果使用file,这个时候的相对路径为项目地址(打包为.jar后,相对路径就是.jar运行地址)。

              编写配置

              现在,官方描述,我们已经知道了配置项的含义。现在我们就来配置。

              我使用的是YML格式的application配置,如果你是使用XML格式的application.properties,记得进行更改。

              最终效果很简单,我想要的效果:

              浏览器输入:http://localhost:8088/SystemData/UserData/Avatar/Mintimate.jpeg

              可以直接访问项目文件下的:/SystemData/UserData/Avatar/Mintimate.jpeg

              Springboot多种方法处理静态资源:设置并访问静态资源目录,就是这个文件了嗷,第4张

              为了实现这样的效果,我们编写配置文件: