Springboot设置并访问静态资源目录

这篇具有很好参考价值的文章主要介绍了Springboot设置并访问静态资源目录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录​​​​​​​

静态文件

application设置方法

配置详解

编写配置

优缺点

设置配置类方法

配置详解

编写配置

优缺点

总结


静态文件

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

Springboot设置并访问静态资源目录,后端,spring boot,后端,java

Springboot设置并访问静态资源目录,后端,spring boot,后端,java

这样的静态资源访问不会被Springboot所拦截处理(方便用于CDN加速):

Springboot设置并访问静态资源目录,后端,spring boot,后端,java

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

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

        ·在application.yml/application.properties内配置。

        ·设置Configuration配置类。

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

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

Springboot设置并访问静态资源目录,后端,spring boot,后端,java

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/

如何运作的?,这里我画个简单的图:

Springboot设置并访问静态资源目录,后端,spring boot,后端,java

需要注意:

  • 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设置并访问静态资源目录,后端,spring boot,后端,java

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

spring:
    mvc:
        # URL响应地址(Springboot默认为/**) 
        static-path-pattern: /SystemData/**
    web:
        resources:
            # 静态文件地址,保留官方内容后,进行追加
            static-locations:
classpath:/static,classpath:/public,classpath:/resources,classpath:/META-INF/resources,file:SystemData

其中,file:SystemData就是映射本地文件了。

这样的配置,类似于Nginx的正则匹配:

location ^~/SystemData{	alias /www/myWeb/SystemData;}

这样,我们运行项目,就可以直接访问静态资源了:

Springboot设置并访问静态资源目录,后端,spring boot,后端,java

当然,这样有一些缺点……

优缺点

这样的配置,可以说最简单且粗暴,但是灵活性差一点点:

        ·URL响应地址只能为一项,也就是spring.mvc.static-path-pattern配置只能写一项。

        这意味着,按我上文设置了/SystemData/**为URL匹配,就不能设置第二个/resources/**这样的配置为第二静态目录。

如果需要设置多个地址为静态资源目录,可以参考下文的设置配置类方法方法。

设置配置类方法

配置详解

写一个配置类,实现静态资源的文件夹方法很多。比如:

  • 继承于WebMvcConfigurationSupport父类,并实现addResourceHandlers方法。
  • 引用WebMvcConfigurer接口,并实现addInterceptors方法

一些文章可能会让你继承于WebMvcConfigurerAdapter方法,但是实际上WebMvcConfigurerAdapter方法在Spring5.0和Springboot2.0之后,已经弃用。

这里,我处于习惯,就使用WebMvcConfigurationSupport进行实现addResourceHandlers:

@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
}

这里的registry使用链式编程,方法为:

  • addResourceHandler:添加URL响应地址目录。
  • addResourceLocations:添加实际资源目录。

        和application.yml里设置一样,支持classpath和file等关键词。接下来,我们就看看实际编写配置。

编写配置

现在我们就来配置。 最终效果很简单,我想要的效果(两组同时):

  • 浏览器输入:http://localhost:8088/SystemData/UserData/Avatar/Mintimate.jpeg
  • 可以直接访问项目文件下的:/SystemData/UserData/Avatar/Mintimate.jpeg,
  • 浏览器输入:http://localhost:8088/SystemDataTest/UserData/Avatar/Mintimate.jpeg
  • 可以直接访问项目文件下的:/Test/UserData/Avatar/Demo.jpeg,

Springboot设置并访问静态资源目录,后端,spring boot,后端,java

        添加一个配置类,并继承WebMvcConfigurationSupport,实现addResourceHandlers方法,并打上@Configuration注解,使其成为配置类:

Springboot设置并访问静态资源目录,后端,spring boot,后端,java

之后,重写内容:

Springboot设置并访问静态资源目录,后端,spring boot,后端,java

主要是:

// 静态资源映射
registry
.addResourceHandler("/SystemData/**")
.addResourceLocations("file:"+IMG_PATH);

registry
.addResourceHandler("/SystemDataTest/**")
.addResourceLocations("file:"+IMG_PATH_TWO);

之后,浏览器就可以访问了:

Springboot设置并访问静态资源目录,后端,spring boot,后端,java

Springboot设置并访问静态资源目录,后端,spring boot,后端,java

这样的配置,其实还是和Nginx配置类是……: 这样的配置,类似于Nginx的正则匹配:

location ^~/SystemData{	alias /www/myWeb/SystemData;}

当然,这样的优缺点……

优缺点

相比前文的配置,这样优缺点很明显:

  • 相比前文,这样的配置更麻烦。
  • 相比前文,这样的可塑性更高:可以添加更多的映射、不会对默认配置造成覆盖等。

总结

        综上所述,就是Springboot的静态资源目录添加方法啦。是不是和Nginx很像?

        虽然现在Nginx和对象存储都很方便,但是直接用Springboot进行静态资源的划分,也不为一种方法。文章来源地址https://www.toymoban.com/news/detail-557435.html

到了这里,关于Springboot设置并访问静态资源目录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot代理访问本地静态资源400 404

    问题:访问过程中可能会出现400、404问题 前提:保证有文件,并且文件路径正确 SpringBoot如何配置静态资源代理,大家可以网上找一找,或者也可以参考我的另一篇博客 SpringBoot addResourceHandlers 代理静态资源 1、路径纯英文 此种情况目前没有遇到过问题 2、路径包含中文 此种

    2024年02月12日
    浏览(41)
  • Spring Boot 访问静态资源css/js

    我们用 Spring Boot 搭建 Web 应用时(如搭建一个博客),经常需要在 Html 中访问一些静态资源,比如: css 样式; js 脚本; favicon.ico 图标等; 而在 Spring Boot 中如果没有做任何配置,是无法直接访问静态资源的,通常会报 404 错误 Spring Boot 访问静态资源,默认有两个默认目录:

    2024年02月08日
    浏览(34)
  • 【BUG】SpringBoot 静态资源(static)无法访问问题404

    SpringBoot访问静态资源出现 404 项目场景 问题描述 ​编辑原因分析 解决方案 1. 将静态资源放在static 或 templates目录中 2. 继承WebMvcConfigurerAdapter  【已经过时】 3. 继承WebMvcConfiguratiWebonSupport 【推荐】 4. 实现WebMvcConfigurer接口 【推荐】 WebMvcConfiguratiWebonSupport 与 WebMvcConfigurer 区别

    2024年02月05日
    浏览(42)
  • springboot 项目访问静态资源遇到的问题,WebMvcConfigurer和WebMvcConfigurationSupport

    之前发过通过继承WebMvcConfigurationSupport来访问静态资源的文章——img标签访问静态资源,代码如下 这个方法是可行的,但会带来一个小问题。 像这些本身就要访问静态资源的,它们一般是实现了WebMvcConfigurer,而不是继承WebMvcConfigurationSupport。 当我们用上面代码中的方法访问

    2024年01月21日
    浏览(45)
  • SpringBoot后端服务开启Https协议提供访问(使用阿里云资源)

    目录 概述  申请/下载证书 部署证书 本地测试访问 服务器部署访问  最后/扩展 总结 本篇博客说明如何将SpringBoot项目开启Https协议提供访问。 博文以步骤 【申请/下载证书】,【部署证书】,【本地测试访问】,【服务器部署访问】  , 【扩展】 展开说明。 废话 :当我们

    2024年02月12日
    浏览(32)
  • 10SpringBoot 静态资源访问 11Springboot的默认配置文件和外部配置文件及加载顺序

            做web开发的时候,我们往往会有很多静态资源,如html、图片、css等。那如何向前端返回静态资源呢?        以前做过web开发的同学应该知道,我们以前创建的web工程下面会有一个webapp的目录,我们只要把静态资源放在该目录下就可以直接访问。        但是,基

    2023年04月08日
    浏览(42)
  • SpringBoot项目打成jar包后,上传的静态资源(图片等)如何存储和访问

    使用springboot开发一个项目,开发文件上传的时候,通常会将上传的文件存储到资源目录下的static里面,然后在本地测试上传文件功能没有问题,但是将项目打成jar包放到服务器上运行的时候就会报错,找不到对应目录。或者可以将上传文件存储到和jar包同级的目录下,但是无

    2024年02月12日
    浏览(48)
  • Spring boot之WEB 开发-静态资源访问--自定义转换器--处理JSON--内容协商

    在线文档: https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.developing-web-applications 1. 只要静态资源放在类路径下: /static 、/public 、/resources 、/META-INF/resources可以被直接访问- 对应文件WebProperties.java 2. 常见静态资源:JS、CSS 、图片(.jpg .png .gif .bmp .svg)、字体

    2024年02月09日
    浏览(29)
  • SpringBoot -05 SpringBoot web相关配置(静态资源访问、统一异常处理、文件上传、拦截器、统一跨域请求处理)

    小总结 SpringBoot是一个基于Spring的工具集,去帮我们完成了大量的配置。在SpringBoot中有一个约定大于配置的概念,就是他把我们很多第三方框架帮我们写好了,而且把我们整个第三方框架所需要的依赖全都通过起步依赖加进去了。开发中只需要加入起步依赖就可以实现某个场

    2024年02月01日
    浏览(35)
  • Spring MVC学习随笔-控制器(Controller)开发详解:控制器跳转与作用域(二)视图模板、静态资源访问

    学习视频:孙哥说SpringMVC:结合Thymeleaf,重塑你的MVC世界!|前所未有的Web开发探索之旅 衔接上文Spring MVC学习随笔-控制器(Controller)开发详解:控制器跳转与作用域(一) SpingMVC中request作用域的处理 代码 Model、ModelMap相关细节分析 通过Model、ModelMap进行作用域处理,可以解决

    2024年02月05日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包