【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多表查询是数据库操作中非常重要的一部分,它允许你…

【深入理解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…

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

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

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

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

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

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

【LeetCode】分隔链表

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

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

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

VTK源码分析:Type System

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

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

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

排序算法

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

Unity XR Interaction Toolkit(VR、AR交互工具包)记录安装到开发的流程,以及遇到的常见问题(一)!

提示:文章有错误的地方,还望诸位大神不吝指教! 文章目录 前言一、XR Interaction Toolkit是什么?二、跨平台交互三、 AR 功能四、XR Interaction Toolkit的特点五、XR Interaction Toolkit 示例总结 前言 随着VR行业的发展&#…

一文搞懂 Java 基础:新手入门必备

目录 📝 Java基础Java起源第一个Java程序基础语法Java标识符Java变量Java注释Java数据类型Java运算符Java流程控制语句 📝 Java基础 Java起源 Java programming language具有大部分编程语言所共有的一些特征,被特意设计用于互联网的分布式环…

《算法笔记》总结No.10——链表

从第10期破例插叙一期单链表的实现,这个东东相当重要!考研的同学也可以看:相较于王道考研的伪码不太相同,专注于可以运行。如果是笔试中的伪码,意思正确即可~ 注:博主之前写过一个版本的顺序表和单链表的C实…

Jolt路线图

1. 引言 a16z crypto团队2024年7月更新了其Jolt路线图: 主要分为3大维度: 1)链上验证维度: 1.1)Zeromorph:见Aztec Labs团队2023年论文 Zeromorph: Zero-Knowledge Multilinear-Evaluation Proofs from…

视觉巡线小车——STM32+OpenMV

系列文章目录 第一章:视觉巡线小车——STM32OpenMV(一) 第二章:视觉巡线小车——STM32OpenMV(二) 第三章:视觉巡线小车——STM32OpenMV(三) 第四章:视觉巡…

【过题记录】 7.21

Mad MAD Sum 算法&#xff1a;思维&#xff0c;前缀最大值 模拟一下他的运行过程就会发现&#xff0c;两次之后整个数组就固定了&#xff0c;之后每次都是每个数往后移动一位&#xff0c;可以模拟两次之后计算每个数的存活轮数&#xff0c;计算贡献。 #include<bits/stdc.h…