springboot中的静态资源规则~

news2024/11/23 18:25:55

静态资源处理:

默认的静态资源路径为

calsspath:/META-INF/resources/
classpath:/resources/
classpath:/static/
classpath:/public/

如果我们将静态资源放置上述四种路径处,那么可以通过项目根路径/静态资源名称的方式访问到,否则会访问不到

举例:

如下所示,我在resources目录下创建了4个不同的目录,它们均可以作为默认的资源路径,并在每个路径下存放了静态资源

在这里插入图片描述

在客户端,如果我们想访问上述的静态资源,那么只需要通过项目根路径/静态资源名称的形式,如下所示:

在这里插入图片描述

那么springboot为什么会知道我们是想找静态资源而不是请求呢?

为了解决这个疑惑,我们可通过创建一个控制器方法,其访问路径与静态资源的访问路径相同,如下所示:

package com.example.demo.Controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class helloController {
    @RequestMapping("/微信图片_20230716223013.jpg")
    public String showMessage(){
        return "aaa";
    }
}

浏览器访问显示如下所示:

在这里插入图片描述

我们可以看出,当静态资源名称和控制器方法相同的情况下,springboot会访问对应的控制器方法而不是静态资源,这其实是与springboot静态映射的原理有关,当客户端发送一个请求,springboot会先去找Controller看是否能进行处理,只有当Controller不能处理的请求才会交给静态资源处理器,如果静态资源处理器也无法处理,则会产生404错误

为了避免发生上述这种当静态资源名称和控制器访问路径名冲突导致静态资源无法正常加载,我们通常需要给静态资源加前缀,例如将静态资源访问路径设置为"/static/**",这样Spring Boot就会将该路径下的请求映射到静态资源上,而不会与其他请求冲突。

举例:

当我们在application.yaml中将静态资源的访问路径设置为如下所示,则表明我们在访问静态资源时,都要在静态资源名称的前面加上/res

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

举例:

未加前缀前的访问路径如下所示:

在这里插入图片描述

加前缀之后的访问路径如下所示:

在这里插入图片描述

如果我们不想将静态资源放置上述路径下,那么我们可以在application.yaml文件中进行配置,如下所示

spring:
  resources:
    static-locations: classpath:/abc/

有了上述配置之后,则会导致我们在默认路径下的所有资源都不会被访问到

只有abc目录下的静态资源会被访问到,如下所示:

在这里插入图片描述

在这里插入图片描述

由此说明,一旦我们配置了外部静态资源文件夹,那么默认的静态资源文件夹就无法被访问了

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

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

相关文章

Oracle-ASM实例communication error问题处理

问题背景: Oracle数据库日志出现大量的WARNING: ASM communication error: op 0 state 0x0 (15055)错误 问题分析: 首先检查ASM实例的状态,尝试通过sqlplus / as sysasm连接asm实例,出现Connected to an idle instance连接asm实例失败 检查ASM实例的后台…

mysql面试题27:数据库中间件了解过吗?什么是sharding jdbc、mycat,并且讲讲怎么使用?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:数据库中间件了解过吗,比如sharding jdbc、mycat? 我知道的数据库中间件有以下这些: MySQL Proxy:MySQL Proxy是一个开源的数据库中间件,它位…

SSM170基于SSM的疫情物质管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

怎么禁止windows server2003系统中的用户进行本地登陆

随着科技的发展,电脑已经成为人们日常生活中必不可少的工具,电脑系统也在逐步更新,这就导致了许多人对于陌生的系统都不知道应该怎么办?当我们在使用windows server2003时,如何设置用户禁止本地登陆呢?接下…

【Linux初阶】多线程1 | 页表的索引作用 线程基础

本文要点 再次理解页表,了解页表是如何利用虚拟地址进行索引,实现数据读取和传输的了解线程概念,线程的优缺点,线程异常的后果了解线程和进程的差异了解线程库及其基本调用接口(进程创建、终止、等待、控制&#xff0…

SQL sever中的视图

目录 一、视图概述: 二、视图好处 三、创建视图 法一: 法二: 四、查看视图信息 五、视图插入数据 六、视图修改数据 七、视图删除数据 八、删除视图 法一: 法二: 一、视图概述: 视图是一种常用…

如何使用 Datree 避免 Kubernetes 错误配置

Kubernetes 是一个复杂的系统,具有许多移动部件。正确的配置规则对于您的服务可靠运行至关重要。当您在没有经过全面审查过程的情况下手动编写 Kubernetes 清单时,可能会出现错误。 Datree是一个基于规则的工具,可以自动查找清单中的问题。您可以使用它来发现策略违规行为,…

常见算法-洗扑克牌(乱数排列)

常见算法-洗扑克牌(乱数排列) 1、说明 洗扑克牌的原理其实与乱数排列是相同的,都是将一组数字(例如1∼N)打乱重新排列,只不过洗扑克牌多了一个花色判断的动作而已。 初学者通常会直接想到,随…

基于 ACK Fluid 的混合云优化数据访问(一):场景与架构

作者:车漾(必嘫) 本系列文章将介绍如何基于 ACK Fluid 支持和优化混合云的数据访问场景。 概述 在 AI 和大数据时代,算力即正义,强大的算力推动了源源不断的创新。然而,企业自建的算力集群存在资源容量和…

继续改进 换一种 使用 result 想直接用CourseExtend

改 c.cid cid, 表示 c.cid 在 from timetable tt inner join teacher t on tt.tidt.tid inner join course c on tt.cidc.cid where tt.cid#{cid} 查出来了 任何赋值给 后面那个cid t.tname "teacher.tname", 表示查出来 赋值给下图那个teacher类的对应属性…

解决:yarn 无法加载文件 “C:\Users\XXXXX\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本“ 的问题

1、问题描述: 报错的整体代码为: yarn : 无法加载文件 C:\Users\admin\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本 // 整体的报错代码为 : yarn : 无法加载文件 C:\Users\admin\AppData\Roaming\npm\yarn.ps1&…

HarmonyOS/OpenHarmony原生应用开发-华为Serverless云端服务支持说明(一)

云端服务的实现是HarmonyOS/OpenHarmony原生应用开发的一个重要的环节,如果用户端是鸿蒙原生应用,但是服务端即云端还是基于传统的各种WEB网络框架、数据库与云服务器,那么所谓的原生应用开发实现的数据即后端服务是和以前、现在的互联网、移…

线性代数中涉及到的matlab命令-第一章:行列式

目录 1,逆序数 2,行列式定义和性质 2.1,常用特性及命令 2.2,求行列式 2.3,行列式的性质 2,行列式按行(列)展开 3,范德蒙德行列式 在学习线性代数过程中&#…

ssm172基于SSM的旅行社管理系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

python每日一练(3)

🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…

安装torchtext遇到的坑及解决办法

刚开始秉着需要什么就pip install什么的原则直接pip install torchtext,结果: 把我这个环境打乱了,自作主张的删掉之前的很多包重新安装了其他版本的包而不是自适应的安装当前torch所对应的torchtext。因为这个环境比较重要也用在其他的工程…

【办公-excel】两个时间相减 (二) - 带毫秒的时间进行相减操作

一、使用内部函数 1.1 效果展示 TEXT(((RIGHT(TEXT(B2,"yyyy-mm-dd hh:mm:ss.000"),LEN(TEXT(B2,"yyyy-mm-dd hh:mm:ss.000"))-FIND(".",TEXT(B2,"yyyy-mm-dd hh:mm:ss.000")))-RIGHT(TEXT(A2,"yyyy-mm-dd hh:mm:ss.000"),…

力扣刷题 day38:10-08

1.矩阵中战斗力最弱的 K 行 给你一个大小为 m * n 的矩阵 mat,矩阵由若干军人和平民组成,分别用 1 和 0 表示。 请你返回矩阵中战斗力最弱的 k 行的索引,按从最弱到最强排序。 如果第 i 行的军人数量少于第 j 行,或者两行军人数…

数据结构——哈希的应用之位图,布隆过滤器与哈希切割

文章目录 前言1. 位图1.1 位图的概念1. 2 模拟实现stl位图位图的应用 2.布隆过滤器2.1 布隆过滤器的概念 布隆过滤器的查找布隆过滤器的删除问题布隆过滤器优点布隆过滤器缺陷 哈希切割 前言 本篇博客主要讲述的是应用哈希的一些数据结构_位图和布隆过滤器,讲解了这…

常见算法-三色棋(Gossip)

常见算法-三色棋(Gossip) 1、说明 三色旗的问题最早由E.W.Dijkstra所提出,他所使用的用语为Dutch Nation Flag(Dijkstra为荷兰人),而多数的作者则使用Three-Color Flag来称之。 假设有一条绳子,上面有红、白、蓝三种…