【SpringBoot Web开发之静态资源访问】笔记

详细内容见官方文档:Static Content
在这里插入图片描述

SpringBoot Web开发之静态资源访问

    • 1.准备工作:创建WebDemo
    • 2.静态资源目录
      • 2.1官网原文
      • 2.2静态资源目录
        • 第一步:依照上面2.1官网原文中创建如下目录
        • 第二步:复制粘贴图片到静态资源目录中
        • 第三步:浏览器测试访问静态资源目录下的图片
        • 第四步:静态资源访问前缀
        • 第四步:改变静态资源位置

1.准备工作:创建WebDemo

创建一个SpringBoot的WebDemo,创建WebDemo具体步骤—>【如何创建一个SpringBoot的WebDemo】笔记方法二使用Spring Initializr创建一个Spring Boot项目
按照上述链接笔记中的步骤创建好WebDemo后测试正常运行后再进行下面的步骤,
此时项目的默认端口号应该为8080

2.静态资源目录

2.1官网原文

By default, Spring Boot serves static content from a directory called /static (or /public or /resources or /META-INF/resources) in the classpath or from the root of the ServletContext. It uses the ResourceHttpRequestHandler from Spring MVC so that you can modify that behavior by adding your own WebMvcConfigurer and overriding the addResourceHandlers method.

默认情况下,Spring Boot从类路径中名为/static(或/public或/resources或/META-INF/resources)的目录或ServletContext的根目录提供静态内容。 它使用Spring MVC中的ResourceHttpRequestHandler,因此您可以通过添加自己的WebMvcConfigurer并覆盖addResourceHandlers方法来修改该行为。

2.2静态资源目录

第一步:依照上面2.1官网原文中创建如下目录
  • static
  • /public
  • /resources
  • /META-INF/resources
    选中resources鼠标右键创建上述文件夹
    在这里插入图片描述
第二步:复制粘贴图片到静态资源目录中

任意的选几个图片复制粘贴到目录中
在这里插入图片描述

第三步:浏览器测试访问静态资源目录下的图片

测试结果:在第二步中我们添加的四个图片均能访问
总结

  • 在默认情况下我们访问静态资源的格式为:当前项目根路径/ + 静态资源名,例如虚下面的四个图片的访问
  • 原理: 静态映射/**。
    请求进来,先去找Controller看能不能处理。不能处理的所有请求又都交给静态资源处理器。静态资源也找不到则响应404页面
    http://127.0.0.1:8080/1.jpg
    在这里插入图片描述
    http://127.0.0.1:8080/2.jpg
    在这里插入图片描述
    http://127.0.0.1:8080/3.jpg
    在这里插入图片描述
    http://127.0.0.1:8080/4.jpg
    在这里插入图片描述
    上面我们说了原理,接下来验证一下:
    创建一个Controller,来映射"1.jpg"
package org.example.webdemo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {@GetMapping("/1.jpg")public String hello(){return "hello cxk";}
}

此时我们再来访问127.0.0.1:8080/1.jpg,发现不再显示图片,服务端响应的是我们自定义字符串。
在这里插入图片描述

第四步:静态资源访问前缀

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:

默认情况下,资源映射在/**上,但您可以使用spring.mvc.static-path-pattern属性进行调整。 例如,将所有资源转移到/resources/**可以通过以下方式实现:
在application.yaml中做如下配置

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

此时再去访问127.0.0.1:8080/2.jpg,发现报404了
在这里插入图片描述
访问127.0.0.1:8080/res/2.jpg,发现必须在我们配置res前缀下才能访问静态资源
在这里插入图片描述

第四步:改变静态资源位置

You can also customize the static resource locations by using the spring.web.resources.static-locations property (replacing the default values with a list of directory locations). The root servlet context path, “/”, is automatically added as a location as well.

您还可以使用spring.web.resources.static-locations属性(将默认值替换为目录位置列表)自定义静态资源位置。 根servlet上下文路径"/"也会自动添加为位置。

  • 创建一个hello12345目录,放入一个hello.jpg
    在这里插入图片描述
  • application.yaml配置静态资源位置,将静态资源目录改为hello12345
server:port: 8080
spring:mvc:static-path-pattern: "/res/**"web:resources:static-locations: classpath:/hello12345/

在这里插入图片描述

  • 浏览器访问静态资源
    http://127.0.0.1:8080/res/2.jpg,访问2.jpg已经访问不到了
    在这里插入图片描述
    http://127.0.0.1:8080/res/hello.jpg,访问成功静态资源目录位置修改成功
    在这里插入图片描述
    实际上可以配置多个静态资源位置的,下面这种数组的形式就可以映射多个静态资源目录
    static-locations: [classpath:/hello12345/,classpath:/nihao123/]
server:port: 8080
spring:mvc:static-path-pattern: "/res/**"web:resources:static-locations: [classpath:/hello12345/,classpath:/nihao123/]

在这里插入图片描述
http://127.0.0.1:8080/res/nihao.jpg
在这里插入图片描述

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

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

相关文章

MySQL:JOIN 多表查询

多表查询 在关系型数据库中,表与表之间是有联系的,它们通过 外键 联系在一起,所以在实际应用中,经常使用多表查询。多表查询就是同时查询两个或两个以上的表。 MySQL多表查询是数据库操作中非常重要的一部分,它允许你…

Pandas 33个冷知识 0721

Pandas 33个冷知识 从Excel读取数据: 使用 pd.read_excel(file.xlsx) 来读取Excel文件。 写入Excel: 使用 df.to_excel(file.xlsx, indexFalse) 将DataFrame写入Excel文件。 创建日期索引: 使用 df.set_index(pd.to_datetime(df[date])) 创建日期索引。 向后填充缺失值: 使用…

【深入理解SpringCloud微服务】浅析微服务注册中心Eureka与nacos,手写实现一个微服务注册中心

【深入理解SpringCloud微服务】浅析微服务注册中心Eureka与nacos,手写实现一个微服务注册中心 注册中心手写实现一个注册中心服务端设计客户端设计 注册中心 注册中心是微服务体系里面非常重要的一个核心组件,它最重要的作用就是实现服务注册与发现。 …

【MyBatisPlus】快速掌握MP插件使用方法

一、MyBatis-Plus简介 1.1 简介 1.2 特性 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作&#x…

【ACM独立出版|EI检索稳定】2024年智能感知与模式识别国际学术会议(ISPC 2024,9月6日-8)

2024年智能感知与模式识别国际学术会议 (ISPC 2024)将于2024年9月6日-8日于中国青岛召开。 会议将围绕智能感知与模式识别等领域中的最新研究成果,为来自国内外高等院校、科学研究所、企事业单位的专家、教授、学者、工程师等提供一个分享专业经验,扩大…

初谈Linux信号-=-信号的产生

文章目录 概述从生活角度理解信号Linux中信号信号常见的处理方式理解信号的发送与保存 信号的产生core、term区别 概述 从生活角度理解信号 你在网上买了很多件商品,再等待不同商品快递的到来。但即便快递没有到来,你也知道快递来临时, 你该…

机械臂泡水维修|机器人雨后进水维修措施

如果机器人不慎被水淹,别慌!我们为你准备了一份紧急的机械臂泡水维修抢修指南,帮助你解决这个问题。 【机器人浸水被淹后紧急维修抢修|如何处理?】 机械臂被淹进水后维修处理方式 1. 机械手淹水后断电断网 首先&am…

Redis 深度历险:核心原理与应用实践 - 读书笔记

目录 第一章 基础应用篇Zset并发问题 - 分布式锁再谈分布式锁客户端在请求时加锁失败策略redis异步队列位图Hyperloglog布隆过滤器GeoHashscan 命令字典结构rehash扩容大 key 扫描 第二章 原理篇线程IO模型RESP 序列化协议持久化管道事务PubSub内存管理 第三章 集群篇CAP主从同…

Grid Puzzle

可以看看官方题解,说一下我的赛时做法 肯定操作二看起来都要优秀得多 不难发现,相邻两行不可能放两个及以上操作一,否则的话直接用两个操作二替代 利用数学归纳法考虑,对于第一行,我们要么用操作二,然后…

shell脚本教程学习

Bash 是 Linux 和 Mac 的默认 Shell&#xff08;命令行环境&#xff09;&#xff0c;系统管理和服务器开发都需要用。 echo命令 echo作用是在屏幕上输入一行文本&#xff0c;可以将该命令的参数输出。一般样式 $ echo "<HTML><HEAD><TITLE>Page Titl…

spring整合mybatis,junit纯注解开发(包括连接druid报错的所有解决方法)

目录 Spring整合mybatis开发步骤 第一步&#xff1a;创建我们的数据表 第二步&#xff1a;编写对应的实体类 第三步&#xff1a;在pom.xml中导入我们所需要的坐标 spring所依赖的坐标 mybatis所依赖的坐标 druid数据源坐标 数据库驱动依赖 第四步&#xff1a;编写SpringC…

Random,ThreadLocalRandom,SecureRandom有什么区别

private final Random randomnew Random(); Make sure that using this pseudorandom number generator is safe here. sonar给出的提示&#xff0c;应该如何修改代码? 根据Sonar的提示&#xff0c;为了确保在多线程环境下使用Random是安全的&#xff0c;您可以使用ThreadL…

linux在ssh的时候询问,yes or no 如何关闭

解决&#xff1a; 在~/.ssh/config文件中添加如下配置项&#xff1a; Host *StrictHostKeyChecking no

数据可视化配色新工具,颜色盘多达2500+类

好看的配色,不仅能让图表突出主要信息,更能吸引读者,之前分享过很多配色工具,例如, 👉可视化配色工具:颜色盘多达3000+类,数万种颜色! 本次再分享一个配色工具pypalettes,颜色盘多达2500+类。 安装pypalettes pip install pypalettes pypalettes使用 第1步,挑选…

Java 语言及其常用集合类的操作,以及反射机制与注解

目录 一、Java 语言概述 二、Java 集合框架 ArrayList 操作示例&#xff1a; HashMap 操作示例&#xff1a; 三、反射机制 1. 反射的示例 五、总结 Java 是一种广泛使用的高级编程语言&#xff0c;因其平台独立性、简洁性及丰富的 API 而备受开发者青睐。 一、Java 语言…

【LeetCode】分隔链表

目录 一、题目二、解法完整代码 一、题目 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 示例 1&#xff1a; 输入&a…

JVM中的GC流程与对象晋升机制

JVM中的GC流程与对象晋升机制 1、JVM堆内存结构2、Minor GC流程3、Full GC流程4、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;垃圾回收&#xff08;GC&#xff09;是自动管…

VTK源码分析:Type System

作为一款开源跨平台的数据可视化代码库&#xff0c;VTK以其清晰的流水线工作方式、丰富的后处理算法、异种渲染/交互方式&#xff0c;而被众多CAx软件选作后处理实施方案。而异种渲染/交互方式的实现&#xff0c;主要是倚重于VTK的类型系统&#xff0c;因此&#xff0c;有必要对…

最新 Docker 下载镜像超时解决方案:Docker proxy

现在Docker换源也下载失败太常见了&#xff0c;至于原因&#xff0c;大家懂得都懂。本文提供一种简洁的方案&#xff0c; 利用 Docker 的http-proxy&#xff0c;代理至本机的 proxy。 文章目录 前言Docker proxy 前言 这里默认你会安装 clash&#xff0c;然后有配置和数据库。…

排序算法

排序算法 内部排序&#xff1a;指将需要处理的所有数据都加载到内部存储器中进行排序 外部排序&#xff1a;数据量过大&#xff0c;无法全部加载到内存中&#xff0c;需要借助外部存储进行排序 算法的时间复杂度 一个算法花费的时间与算法中语句的执行次数成正比&#xff0c;…