Springboot中的静态资源配置

目录

静态资源目录

静态资源和 RequestMapping 冲突

静态资源访问前缀

自定义静态资源目录

1.在配置文件中配置静态资源目录

2. 通过 WebMvcConfigurer 配置静态资源目录

欢迎页支持

自定义 Favicon


静态资源目录

Spring Boot 对静态资源提供了支持。默认情况下,以下目录为默认的静态资源目录。其中的静态资源可以被直接访问:

  • classpath:/META-INF/resources/
  • classpath:/resources/
  • classpath:/static/
  • classpath:/public/
  • ${user.dir}/public/ (程序运行目录下的 public 目录)

优先级从上往下,当多个静态资源目录中出现同名文件时,越靠上的目录权重越高。 

静态资源和 RequestMapping 冲突

如果静态资源路径和 @RequestMapping 路径冲突,则 @RequestMapping 优先。

例如:

有如下 Controller,且在 src/main/resources/public 目录下有一个名为 foo 的文本文件;

启动应用,访问 http://localhost:8080/foo,这时静态资源路径和 @RequestMapping 路径冲突,先去找Controller看能不能处理。不能处理的所有请求又都交给静态资源处理器。静态资源也找不到则响应404页面。

@RestController
@RequestMapping
public class DemoController {@GetMapping("/foo")public ResponseEntity<String> foo () {// 返回字符串 “controller”return ResponseEntity.ok("controller");}
}

静态资源访问前缀

默认无前缀

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

当前项目 + static-path-pattern + 静态资源名 = 静态资源文件夹下找

自定义静态资源目录

1.在配置文件中配置静态资源目录
spring:resources:static-locations: classpath:/haha/

静态资源目录不仅可以是 classpath 下的目录,也可以是本地磁盘目录,使用 file: 前缀进行配置,如: 

spring.web.resources.static-locations[0]=file:D:\\upload\\

还可以配合 ${} 语法,从环境变量、系统属性中读取目录信息,例如,设置应用启动目录下的 public 目录为静态资源目录: 

# ${user.dir} 的值也就是 System.getProperty("user.dir")
spring.web.resources.static-locations[0]=file:${user.dir}\\upload\\
2. 通过 WebMvcConfigurer 配置静态资源目录

通过 WebMvcConfigurer 配置接口的 addResourceHandlers 方法,可以编程式地配置静态资源访问路径和静态资源目录。

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {// 静态资源访问路径registry.addResourceHandler("/**")// classpath下的静态资源目录.addResourceLocations("classpath:/public/")// 本地磁盘下的静态资源目录.addResourceLocations("file:D:\\upload\\");}
}

这种方式不支持使用 ${} 表达式。 

欢迎页支持

  • 静态资源路径下 index.html
    • 可以配置静态资源路径
    • 但是不可以配置静态资源的访问前缀。否则导致 index.html不能被默认访问
spring:
#  mvc:
#    static-path-pattern: /res/**   这个会导致welcome page功能失效resources:static-locations: [classpath:/haha/]

自定义 Favicon

 favicon.ico 放在静态资源目录下即可。

spring:
#  mvc:
#    static-path-pattern: /res/**   这个会导致 Favicon 功能失效

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

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

相关文章

【SQL】设置两阶段提交的意义

两阶段提交&#xff08;Two-Phase Commit, 2PC&#xff09;是一种用于分布式系统中协调多个节点以确保事务一致性的协议。它的主要意义在于确保分布式系统中的数据一致性和完整性。具体意义如下&#xff1a; 数据一致性&#xff1a;在分布式环境中&#xff0c;多个节点共同参与…

Java OA系统日程管理模块

# 构建一个OA系统日程管理模块 本文将介绍如何使用Spring Boot和Vue.js构建一个OA系统日程管理模块&#xff0c;支持日程的添加、修改、删除、提醒和共享功能。 ## 项目结构 项目结构如下&#xff1a; text oa-schedule-management/ │ pom.xml │ └───src/main/java…

Pytorch实战(一):LeNet神经网络

文章目录 一、模型实现1.1数据集的下载1.2加载数据集1.3模型训练1.4模型预测 LeNet神经网络是第一个卷积神经网络&#xff08;CNN&#xff09;&#xff0c;首次采用了卷积层、池化层这两个全新的神经网络组件&#xff0c;接收灰度图像&#xff0c;并输出其中包含的手写数字&…

告别模糊时代,扫描全能王带来清晰世界

模糊碑文引发的思考 上个月中旬去洛阳拜访了著名的龙门石窟&#xff0c;本就对碑文和文字图画感兴趣的我们&#xff0c;准备好好欣赏一下龙门石窟的历史文化古迹。到了地方之后&#xff0c;我发现石窟的高度和宽度远远超出了想象&#xff0c;正因如此&#xff0c;拍出来的文字…

Linux中进程和线程区别

进程在内核中的描述符 task_struct 结构&#xff1a; struct task_struct {// 进程idpid_t pid;// 用于标识线程所属的进程 pidpid_t tgid;// 进程打开的文件信息struct files_struct *files;// 内存描述符表示进程虚拟地址空间struct mm_struct *mm;.......... 省略 …

NewspaceGPT带你玩系列之美人鱼图表

这里写目录标题 注册一个账号&#xff0c;用qq邮箱&#xff0c;然后登录选一个可用的Plus&#xff0c;不要选3.5探索GPT今天的主角是开始寻梦美人鱼图表我选第一个试一下问&#xff1a;重新回答上面的问题&#xff0c;一切都用汉语重新生成一个流程图&#xff1a;生成一个网站登…

OpenAI“跌倒”,国产大模型“吃饱”?

大数据产业创新服务媒体 ——聚焦数据 改变商业 在AI的世界里&#xff0c;OpenAI就像是一位高高在上的霸主&#xff0c;它的一举一动&#xff0c;都能引发行业里的地震。然而&#xff0c;就在不久前&#xff0c;这位霸主突然宣布了一个决定&#xff0c;自7月9日起&#xff0c;…

2024热门骨传导蓝牙耳机怎么选?超全的选购攻略附带好物推荐!

对于很多喜欢运动健身的小伙伴&#xff0c;在现在市面上这么多种类耳机的选择上&#xff0c;对于我来说的话还是很推荐大家去选择骨传导运动耳机的&#xff0c;相较于普通的入耳式蓝牙耳机&#xff0c;骨传导耳机是通过振动来传输声音的&#xff0c;而入耳式耳机则是通过空气传…

以Bert训练为例,测试torch不同的运行方式,并用torch.profile+HolisticTraceAnalysis分析性能瓶颈

以Bert训练为例,测试torch不同的运行方式,并用torch.profileHolisticTraceAnalysis分析性能瓶颈 1.参考链接:2.性能对比3.相关依赖或命令4.测试代码5.HolisticTraceAnalysis代码6.可视化A.优化前B.优化后 以Bert训练为例,测试torch不同的运行方式,并用torch.profileHolisticTra…

requests 库

快速上手 import requests# 定制请求头 headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36, # 标识浏览器的详细信息&#xff0c;包括名称、版本、操作系统等Accept: */*, # 指…

TypeScript 基础

Typescript的好处是什么&#xff1f; TypeScript &#xff1a;是JavaScript 的超集&#xff08;ts是微软开发的开源编程语言&#xff0c;vue3的底层代码也是ts&#xff09;&#xff0c;即包含JavaScript 的所有元素&#xff0c;能运行JavaScript 的代码&#xff0c;并扩展了Jav…

列出R包中的函数

要列出R包中的所有函数&#xff0c;可以使用几个R内置函数。以下是几个常用的方法来列出特定R包中的所有函数&#xff1a; 方法1&#xff1a;使用ls和getNamespaceExports 这种方法通过列出包的命名空间导出对象来获取所有函数&#xff1a; # 替换pkg为你感兴趣的包名 pkg &…

QT QML 界面设计教程10——复选框样式

MyComboBox.qml import QtQuick 2.12 import QtQuick.Templates 2.12 as Template1 import QtQuick.Controls 2.12 import QtQuick.Controls.impl 2.12Template1.ComboBox {id:controlproperty color themeColor: "darkCyan" //主题颜色property color indicatorCo…

Java中将字符串写入文件中的几种方式

以下是几种不同的实现方法将字符串写入文件中的 Java 代码&#xff1a; 1、使用 BufferedWriter 类 import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException;public class Main {public static void main(String[] args) {String content &…

正则表达式阅读理解

这段正则表达式可以匹配什么呢&#xff1f; ((max|min)\\s*\\([^\\)]*(,[^\\)]*)*\\)|[a-zA-Z][a-zA-Z0-9]*(_[a-zA-Z][a-zA-Z0-9]*)?(\\*||%)?|[0-9](\\.[0-9])?|\\([^\\)]*(,[^\\)]*)*\\))(\\s*[-*/%]\\s*([a-zA-Z][a-zA-Z0-9]*(_[a-zA-Z][a-zA-Z0-9]*)?(\\*||%)?|[0-…

GitHub国内使用方法

1、登录验证&#xff1a; 在火狐中添加插件“身份验证器”。此款插件对应的主页地址为&#xff1a;https://github.com/Authenticator-Extension/Authenticator 2、加速&#xff1a; 安装工具&#xff1a;https://gitee.com/XingYuan55/FastGithub/releases/tag/2.1.4 工具…

Charls数据库+预测模型发二区top | CHARLS等七大老年公共数据库周报(6.19)

七大老年公共数据库 七大老年公共数据库共涵盖33个国家的数据&#xff0c;包括&#xff1a;美国健康与退休研究 (Health and Retirement Study, HRS)&#xff1b;英国老龄化纵向研究 &#xff08;English Longitudinal Study of Ageing, ELSA&#xff09;&#xff1b;欧洲健康、…

一位NVIDIA芯片工程师繁忙的一天

早晨&#xff1a;开启新的一天 7:00 AM - 起床 早晨七点准时起床。洗漱、吃早餐后&#xff0c;查看手机上的邮件和公司消息&#xff0c;以便提前了解今天的工作安排和任务优先级。 7:30 AM - 前往公司 开车前往位于加州圣克拉拉的NVIDIA总部。在车上&#xff0c;习惯性地听一…

HashMap第5讲——resize方法扩容源码分析及细节

put方法的源码和相关的细节已经介绍完了&#xff0c;下面我们进入扩容功能的讲解。 一、为什么需要扩容 这个也比较好理解。假设现在HashMap里的元素已经很多了&#xff0c;但是链化比较严重&#xff0c;即便树化了&#xff0c;查询效率也是O(logN)&#xff0c;肯定没有O(1)好…

IDEA注释快只有一行时不分行的设置

在编写注释时&#xff0c;有时使用注释块来标注一个变量或者一段代码时&#xff0c;为了节约空间&#xff0c;希望只在一行中显示注释快。只需要按照下图将“一行注释不分行”勾选上即可。