springboot中的静态资源规则~

简介: springboot中的静态资源规则~

静态资源处理:

默认的静态资源路径为

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目录下的静态资源会被访问到,如下所示:

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

相关文章
|
7月前
|
JavaScript 前端开发 Java
SpringBoot之静态资源规则与定制化
SpringBoot之静态资源规则与定制化
146 1
|
7月前
|
移动开发 Java HTML5
Springboot web静态资源配置
Springboot web静态资源配置
112 0
|
3月前
|
Java Spring
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
本文介绍了Spring Boot中静态资源的访问位置、如何进行静态资源访问测试、自定义静态资源路径和静态资源请求映射,以及如何处理自定义静态资源映射对index页面访问的影响。提供了两种解决方案:取消自定义静态资源映射或编写Controller来截获index.html的请求并重定向。
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
|
1月前
|
JavaScript 前端开发 Java
SpringBoot_web开发-webjars&静态资源映射规则
https://www.91chuli.com/ 举例:jquery前端框架
22 0
|
3月前
|
消息中间件 NoSQL 安全
(转)Spring Boot加载 不同位置的 application.properties配置文件顺序规则
这篇文章介绍了Spring Boot加载配置文件的顺序规则,包括不同位置的application.properties文件的加载优先级,以及如何通过命令行参数或环境变量来指定配置文件的名称和位置。
113 0
|
4月前
|
Java Spring
Spring Boot实战:静态资源无法访问
Spring Boot实战:静态资源无法访问
76 0
|
5月前
|
Java
自主定义访问路径-----SpringBoot自主定义静态资源访问路径的方法
自主定义访问路径-----SpringBoot自主定义静态资源访问路径的方法
|
6月前
|
搜索推荐 前端开发 JavaScript
SpringBoot静态资源访问控制和封装集成方案
该文档描述了对基于SpringBoot的项目框架进行优化和整合的过程。原先采用前后端分离,后端兼做前端,但随着项目增多,升级维护变得复杂。因此,决定整合后台管理页面与后端代码,统一发布。设计上,框架包含后台管理资源,项目则配置具体业务页面,项目可通过覆盖框架资源实现个性化。关键步骤包括:自定义静态资源访问路径、解决图标与字体文件访问问题、设定自定义欢迎页面和页面图标,以及确保项目能正确访问框架静态资源。通过扫描jar包、解压和拷贝资源到项目目录,实现了框架静态资源的动态加载。此外,调整静态资源访问优先级,保证正确加载。最终实现支持jar和war包的项目结构优化。
120 4
|
6月前
|
缓存 前端开发 JavaScript
Spring Boot中如何处理静态资源
Spring Boot中如何处理静态资源
|
7月前
|
前端开发 JavaScript Java
Springboot静态资源访问、上传、回显和下载
Springboot静态资源访问、上传、回显和下载
264 0
Springboot静态资源访问、上传、回显和下载