Springboot配置通过URL访问图片(静态资源)

一、确保为web项目,创建WebConfig 实现WebMvcConfigurer (推荐)或 继承WebMvcConfigurationSupport

说明:

  • SpringBoot2.0 配置WebMvc 需extends WebMvcConfigurationSupportimplements WebMvcConfigurer
  • Spring Boot中只能有一个WebMvcConfigurationSupport配置类是真正起作用的,对于这个问题,其实可以通过implements WebMvcConfigurer来解决,多个不同的配置类实现这个接口后的配置都可以正常运行。
  • 推荐使用implements WebMvcConfigurer
    原因:继承WebMvcConfigurationSupport可能会导致其他库的Mvc配置失效,如:在自定义一个类extends WebMvcConfigurationSupport后会导致Swagger2库的资源无法访问

二、覆写addResourceHandlers方法

  • 通过相对路径访问(访问resource中的资源)的配置类
    下面的代码会将拦截所有 /static/**,并返回 SpringBoot resource目录下所对应的资源

    registry.addResourceHandler(“/static/**”)
    .addResourceLocations(“classpath:/static/”);

    完整示例:

@Configuration
public class WebConfig implements WebMvcConfigurer{@AutowiredImageConfig imageConfig;@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");}
}
  • 通过绝对路径访问的配置类

    下面的代码会将拦截所有 /image/**,并返回 filePath路径所对应的资源,filePath为文件的绝对路径,如:D:\test\test.png

    registry.addResourceHandler(“/image/**”).addResourceLocations(“file:” + filePath);

    完整示例:

@Configuration
public class WebConfig implements WebMvcConfigurer{@AutowiredImageConfig imageConfig;@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {//配置图片静态资源处理器registry.addResourceHandler("/images/**").addResourceLocations("file:" + imageConfig.getSavePath());}
}

注意

  • 继承WebMvcConfigurationSupport可能会导致其他库的Mvc配置失效,如:在自定义一个类extends WebMvcConfigurationSupport后会导致Swagger2库的资源无法访问
  • linux 路径分隔符为 /,windows为\
  • 通过yml配置文件设置资源访问路径时,必须在路径最后加上分隔符
    错误实例:D:\classdesign-photo\images
    正确实例:D:\classdesign-photo\images\
    yml配置示例:
storage:image:#保存路径save-path: D:\classdesign-photo\images\#允许上传的类型allow-type:- jpg- png

参考

  • springboot通过设置addResourceHandlers拦截请求访问本地资源踩坑实战
  • springboot通过URL直接获取图片
  • SpringMVC官方文档(英文)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

区块链技术

转载自 区块链技术最近影响极大的“勒索”病毒袭转全球,造成数以万计的电脑中毒,主要是通过AES/RSA加密电脑办公文件,此种加密方式没有私钥无法解密,黑客提供了解密的方式,就是按黑客提供的交易方式“比特币”交易&…

Springboot实现文件上传,并防止同文件重复上传

目录主要流程编写接受文件上传的Controller编写文件操作结果类编写文件操作类知识总结参考主要流程 在配置文件中添加文件操作的配置,示例: storage:image:#保存位置save-path: D:\classdesign-photo\images\#允许上传的类型allow-type:- jpg- png编写…

asp 执行 exe_EXE程序加密锁下载-EXE程序加密锁电脑版下载v5.0

exe是Windows电脑上常见的程序运行文件格式,EXE程序加密锁能够将该种类型的文件进行加密,帮助用户控制某个软件的使用权限,它的体积可以忽略不计,操作方法也很简单。软件特色EXE程序加密锁是一个功能强大的exe程序锁,能…

dubbo服务调试管理实用命令

转载自 dubbo服务调试管理实用命令 公司如果分项目组开发的,各个项目组调用各项目组的接口,有时候需要在联调环境调试对方的接口,可以直接telnet到dubbo的服务通过命令查看已经布的接口和方法,并能直接invoke具体的方法&#xff…

转-聚合查询变慢-详解Elasticsearch的Global Ordinals与High Cardinality

转自: https://blog.csdn.net/zwgdft/article/details/83215977 【README】 Elasticsearch中的概念很多,本文将从笔者在实践过程中遇到的问题出发,逐步详细介绍 Global Ordinals 和 High Cardinality ,这也是笔者的认知过程。文中…

SpringBoot配置Mybatis的两种方式(通过XML配置和通过YML配置文件配置)

一、 通过XML的方式配置Mybatis 在 /src/main/resource下创建Mybatis配置文件 mybatis-config.xml 和 映射文件目录mapper在application.yml指定Mybatis配置文件、映射文件的位置 可选: - mybatis.config-location:配置 mybatis-config.xml 路径mybatis…

cmw500综合测试仪使用_山西优质三相直流电阻测试仪图片-南电合创

感谢您关注我们的产品,本公司除了有此产品介绍以外,还有太阳能接线盒测试仪,绝缘电阻测试仪,回路电阻测试仪,变压器直流电阻测试仪,无线高压核相仪,微机继电保护测试仪,电能质量分析…

内连接,外链接(左连接、右连接、全连接),交叉连接大总结

转载自 内连接,外链接(左连接、右连接、全连接),交叉连接大总结1.什么是连接查询呢?概念:根据两个表或多个表的列之间的关系,从这些表中查询数据。目的:实现多个表查询操作。2.分类&…

redis创建集群报错can‘t connect to node 192.168.163.203

【README】 创建集群报错 cant connect to node 192.168.163.203 [rootcentos201 ~]# /usr/local/redis-cluster/bin/redis-trib.rb create --replicas 0 192.168.163.201:6379 192.168.163.202:6379 192.168.163.203:6379 >>> Creating cluster Connecting to no…

SpringMVC控制器方法获取参数时@RequestParam注解加与不加的区别

问题 在使用SpringMVC时获取参数时,加与不加RequestParam都会自动传入参数值,那加与不加的区别是什么? 测试 GetMapping("test1")public String test1(String s){return "参数:"s;}GetMapping("test2&…

如何设置电脑自动锁屏_这个手机锁屏密码竟可以根据时间而变化!密码每分钟都会发生改变...

如今,手机已经成为了我们生活中不可或缺的一部分。手机里面承载了我们太多的个人信息、生活隐私,财产安全等等。为了防止别人偷窥我们的手机,我们都会将手机设置锁屏密码。相信大家锁屏设置的都是图形或者数字密码。但是这样的密码很容易被人…

我猜,每个程序员对着电梯都想过调度算法吧

转载自 我猜,每个程序员对着电梯都想过调度算法吧 传统电梯调度算法 1.1 先来先服务算法(FCFS) 先来先服务(FCFS-First Come First Serve)算法,是一种随即服务算法,它不仅仅没有对寻找楼层进行…

redis集群添加节点报错Either the node already knows other nodes (check with CLUSTER NODES) or contains some k

【README】 redis集群添加节点报错 [ERR] Node 192.168.163.202:6380 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0. 【1】 原因 导致异常的主要原因是该节点中默认生成的配置或历史存储数据…

SpringMVC 参数校验

SpringMVC 可以通过使用注解的方式对参数进行校验&#xff0c;省去参数校验的代码 引入依赖 Spring项目需引入 <dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId><version>6.0.7.F…

linux入门_Linux超详细0基础入门篇(一)

首先要感谢大康老师对我在Linux操作系统上的教导。今天来讲一下用途广泛的Linux的基础入门教程仅仅是做入门使用&#xff0c;如果想更加深入的学习那就需要自己做探索了。本次例子使用的是kali linux(ARM架构)是基于Debian的Linux发行版本&#xff0c;可能会与其他版本操作有所…

教你如何监控 Java 线程池运行状态

转载自 干货 | 教你如何监控 Java 线程池运行状态 之前写过一篇 Java 线程池的使用介绍文章《线程池全面解析》&#xff0c;全面介绍了什么是线程池、线程池核心类、线程池工作流程、线程池分类、拒绝策略、及如何提交与关闭线程池等。 但在实际开发过程中&#xff0c;在线程池…

算法设计与分析:(一)时间复杂度分析

数学基础 设f和g是定义域为自然数集N上的函数 存在正整数c、n&#xff0c;使0<f(n)<cg(n)成立&#xff0c;称f(n)的渐进上界是g(n)&#xff0c;记作f(n)O(g(n))存在正整数c、n&#xff0c;使0<cg(n)<f(n)成立&#xff0c;则称f(n)渐进下界是g(n)&#xff0c;记作…

redis集群3种模式

【README】 转自&#xff1a; https://segmentfault.com/a/1190000022808576 &#xff08;好文章&#xff09; Redis 支持三种集群方案 主从复制模式Sentinel&#xff08;哨兵&#xff09;模式Cluster 模式【1】主从复制模式 主从复制的作用 通过持久化功能&#xff0…

ios签名软件_苹果企业签名常常掉怎样处理【苹果签名吧】

对于使用ios苹果系统的开发者来说&#xff0c;可以在苹果app商店下载现在陈列的APP软件&#xff0c;但是没有陈列的APP软件只能使用苹果签名&#xff0c;通过上传到app签名渠道的方法下载。这种方法的缺点是&#xff0c;如果苹果ios签名无效(即签名丢失)&#xff0c;应用程序无…

算法设计与分析:(二)动态规划

目录设计思想使用动态规划的必要条件适用动态规划算法解决的问题的特征&#xff1a;优化原则&#xff1a;动态规划的一般步骤以背包问题为例动态规划本质上为带备忘录的穷举算法。对动态规划问题&#xff0c;直接套框架即可&#xff1a;问题有什么「状态」&#xff0c;有什么「…