Spring Boot 中的静态资源是什么,如何使用

news2024/11/26 21:43:41

Spring Boot 中的静态资源是什么,如何使用

在 Web 应用程序中,静态资源通常是指不会动态生成的文件,例如图片、CSS、JavaScript 文件等。Spring Boot 提供了一种简单的方式来处理这些静态资源,让我们可以更加方便地管理和使用它们。

在这里插入图片描述

静态资源的配置

在 Spring Boot 中,静态资源的配置相对简单,只需要将文件放在指定的目录下即可。默认情况下,Spring Boot 会在 classpath:/staticclasspath:/publicclasspath:/resources/META-INF/resources 目录下查找静态资源。

我们也可以通过配置 spring.resources.static-locations 属性来指定静态资源的目录。例如,我们可以在 application.properties 文件中添加如下配置:

spring.resources.static-locations=classpath:/static/,classpath:/static2/

以上配置将会将静态资源目录分别设置为 classpath:/static/classpath:/static2/

静态资源的访问

在使用静态资源时,我们可以通过 URL 直接访问静态资源。例如,如果我们有一张名为 logo.png 的图片,位于 classpath:/static/images/ 目录下,我们可以通过以下 URL 访问它:

http://localhost:8080/images/logo.png

如果我们想要访问 classpath:/static2/ 目录下的静态资源,我们需要将 URL 中的路径修改为 /static2/。例如,如果我们有一个名为 style.css 的文件,位于 classpath:/static2/css/ 目录下,我们可以通过以下 URL 访问它:

http://localhost:8080/static2/css/style.css

自定义静态资源

除了使用 Spring Boot 默认提供的静态资源目录之外,我们还可以自定义静态资源目录。例如,如果我们想要将静态资源放在项目根目录下的 static 目录中,我们可以在 application.properties 文件中添加如下配置:

spring.resources.static-locations=file:./static/

以上配置将会将静态资源目录设置为 file:./static/,即项目根目录下的 static 目录。在这个目录下,我们可以添加任何我们想要的静态资源。

静态资源的缓存

在默认情况下,Spring Boot 会为静态资源启用缓存。这意味着,如果我们在应用程序中使用相同的静态资源文件名,浏览器将从缓存中获取文件,而不是从服务器重新下载。

为了使静态资源缓存更加有效,我们可以在静态资源文件名中添加哈希值。这样的做法可以确保每次文件内容发生变化时,文件名也会发生变化,从而强制浏览器重新下载文件。例如,我们可以将文件名修改为 style-abc123.css,其中 abc123 是文件内容的哈希值。

为了自动添加哈希值,我们可以在配置文件中添加如下配置:

spring.resources.chain.strategy.content.enabled=true
spring.resources.chain.strategy.content.paths=/**

以上配置将会在静态资源文件名中添加哈希值。例如,如果我们有一个名为 style.css 的文件,它的哈希值为 abc123,那么 Spring Boot 将会将文件名修改为 style-abc123.css

静态资源压缩

在默认情况下,Spring Boot 不会对静态资源进行压缩。但是,我们可以通过配置来启用静态资源压缩。例如,我们可以在 application.properties 文件中添加如下配置:

server.compression.enabled=true
server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json

以上配置将会启用静态资源压缩,并对 text/htmltext/xmltext/plaintext/csstext/javascriptapplication/javascriptapplication/json 这些 MIME 类型的文件进行压缩。

示例代码

下面是一个简单的 Spring Boot 应用程序,演示了如何使用静态资源:

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

@Controller
public class MyController {
    @GetMapping("/")
    public String index() {
        return "index";
    }
}

// 在 src/main/resources/static 目录下创建 index.html 文件

在上面的代码中,我们创建了一个基本的 Spring Boot 应用程序,使用了 @Controller 注解来定义一个控制器,并在控制器中返回了 index 字符串。我们还在 src/main/resources/static 目录下创建了一个名为 index.html 的静态资源文件,用于显示首页内容。

结论

在 Spring Boot 中使用静态资源非常简单,我们只需要将静态资源文件放在指定的目录下即可。Spring Boot 还提供了许多有用的配置选项,例如自定义静态资源目录、启用静态资源缓存、自动添加哈希值等,让我们可以更加方便地管理和使用静态资源。

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

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

相关文章

金融人离不开的CFA,中国人民大学与加拿大女王大学金融硕士国际班学员貌似也离不开

全球最具含金量的证书CFA证书也会被质疑你相信吗?号称“全球金融第一考”的CFA,是强化和丰富金融知识体系的。而认为这个证书只是一种背书,与工作实践无用的这批人,小编认为可能这些人也跟学历无用论是一类人。现实的他们是因为拿…

K8S-概述

k8s是什么? go语言开发的开源的跨主机的容器编排工具;全称是kubernetes; k8s的组件: master: ①kube-apiserver 所有服务统一的访问入口,无论对内还是对外; ②kube-controller-manager 资源…

【python系列】手把手教你在pypi发布自己的包-他人可pip下载

前言 最近在写一个接口执行引擎用作于接口自动化测试平台的核心。 看了挺多资料,做了挺多事情,学了挺多乱七八糟的知识,笔记记得乱糟糟的,以至于一直没有整理发文(啊其实我就是懒),各位见谅。…

openkylin安装git、openssh-server

openkylin安装成功之后是没有安装git的,故不能clone代码 也没有安装openssh-server,故不能使用finalshell等工具通过ssh登录 安装git和openssh-server 打开终端:桌面空白处,右键,点击打开终端 输入下面的命令&…

第九章 elasticsearch集群与商品搜索

1、支持复杂的查询; 2、ES从一出生就是为分布式、集群化而 生的,不仅方便横向扩展、动态增加节点 创建索引的时候,定义3个分片,每个分片1个副本集,一个就有6个分片 如图,不论我们有多少个es实例,当用户需要对es进行增删改查的时候,连接任何一台节点都行,es内部会进行…

linux 安装中文输入法

sudo apt-get install fcitx-googlepinyin

【PAT B 1010,1011】一元多项式求导 ,A+B和C

目录 1010 一元多项式求导 1011 AB 和 C 1010 一元多项式求导 设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为nxn−1。) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不…

Spring拦截器入门案例讲解

1.拦截器的概念 拦截器是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行。 作用 在指定的方法调用前后执行预先设定的代码阻止原始方法的执行 2.拦截器和过滤器的区别 归属不同:Filter属于Servlet技术,Interceptor属…

第二课:Figma 界面认识

创建文件 进入 Figma 后,可以查看最近浏览的内容,官方也推荐了一些基础的项目,点击右上角 Design file(设计文件)即可创建项目; 注:网页版和本地版界面样式布局一致。 创建画布 点击左上画框…

SpringBoot教学资料2-Hello SpringBoot!

Hello SpringBoot! springboot的启动 1.创建springboot项目。注意选择spring-boot-starter-parent版本。版本兼容适配问题请看下列。 springboot1.5.9以下兼容jdk1.7 springboot2.x.x版本兼容jdk1.8 springboot3.0及以上版本兼容jdk17 springboot2.1之后的版本已…

企业微信自建应用获取登录用户敏感信息,一键授权 (python篇,详细多图)

目录 收起 企业微信自建应用配置 自建应用 构造网页授权链接 请求用户信息 补充 ACCESS_TOKEN 企业微信自建应用配置 自建应用 新建应用 企业微信管理后台——>应用管理,拉到最下方,创建应用 创建应用 配置应用 在应用管理页面点击刚才创…

jmeter 性能测试用 csv,这个坑有些扯蛋

⏩很多人在使用 jmeter 做接口测试、自动化测试和性能测试时,都喜欢用 CSV 数据文件设置功能,来读取准备好的测试数据。虽然这种方法并不是最优方案,在我们的性能测试课程中,讲解了更优的方案,但是,没有上过…

阿里云国际站:在阿里云上做开发,究竟是一种怎样的体验?

标题:在阿里云上做开发,究竟是一种怎样的体验?   "在阿里云上做开发,到底是一种什么样的体验?"这是一个我经常被问到的问题,今天我决定与大家深度探讨这个话题。我们知道,任何对用户体验的描述…

面向对象七大设计原则

更多Java知识学习 文章目录 前言一、单一职责原则定义:优点:怎么应用? 二、开闭原则定义优点怎么应用? 三、依赖倒置原则定义优点怎么应用? 四、接口隔离原则定义优点怎么应用? 五、里氏替换原则定义继承的…

对标推特,Threads横空出世,最新Threads账号注册和登录保姆级教程

Meta 正式在全球超过 100 个国家地区应用商店上线 Threads,一款和 Twitter 高度相似的社交软件,并将其定位为 Instagram 的文字对话应用。 Meta 试图以 Threads 吸引那些因马斯克决策而离开了 Twitter 的用户。 在Threads帖文中,扎克伯格向所…

从C语言到C++_24(二叉搜索树)概念+完整代码实现+笔试题

目录 1. 二叉搜索树(BinarySearchTree) 1.1 二叉搜索树的优势和劣势 二叉搜索树的时间复杂度:O(N) 1.2 二叉搜索树的改良 2. 二叉搜索树的实现 2.1 二叉搜索树的定义 2.2 二叉搜索树的插入 2.3 二叉搜索树的查找 2.4 二叉搜索树的删…

(汽车级)TMCS1101A3BQDRQ1、TMCS1101A3UQDRQ1隔离式霍尔效应电流传感器 6mA 8-SOIC

TMCS1101/TMCS1101-Q1精密隔离电流传感器是电隔离霍尔效应电流传感器&#xff0c;能够进行直流或交流电流测量&#xff0c;具有高精度、出色的线性度以及温度稳定性等特性。低漂移、温度补偿信号链在整个器件温度范围内具有<1.5%满量程误差。输入电流流经内部1.8mΩ导体&…

只需2行python代码,轻松将PDF转换成Word

1. pdf2docx功能 - 解析和创建页面布局- 页边距- 章节和分栏 (目前最多支持两栏布局)- 页眉和页脚 [TODO]- 解析和创建段落- OCR 文本 [TODO] - 水平&#xff08;从左到右&#xff09;或竖直&#xff08;自底向上&#xff09;方向文本- 字体样式例如字体、字号、粗/斜体、颜色…

什么是V2G充电技术?

据权威数据统计&#xff0c;截止2020年&#xff0c;我国纯电动汽车保有量已经达到400万辆。随着电动汽车保有量的快速增长&#xff0c;对电网会有一定的影响&#xff0c;电力容量需求增大&#xff0c;加剧用电峰谷差&#xff0c;对电网的冲击大&#xff0c;影响居民正常生活。这…

C#核心知识回顾——11.各数据集合的汇总区分、委托、事件

变量: 无符号 byte正8位 ushort正16位 uint正32位 ulong正64位 有符号 sbyte8位 short16位 int32位 long64位 浮点数 float double decimal 特殊 char bool string 复杂数据容器: 枚举enum 结构体struct 数组(一维、二维、交错) [] [,] [][] 类 数据集合&#xff1a;…