静态资源访问

静态资源目录

请求进来,先去找Controller看能不能处理。不能处理的所有请求又都交给静态资源处理器。静态资源也找不到则响应404页面。如果静态目录中存在a.png,访问localhost:8080/a.png也不会访问到a.png,而是会得到字符串"student"。因为请求进来,先去找Controller看能不能处理。不能处理的所有请求又都交给静态资源处理器。

@Slf4j
@RestController
public class StudentController {
@RequestMapping("/a.png")
public String handle02() {
return "student";
} }

WebMvcAutoConfiguration类自动为我们注册了如下目录为静态资源目录(favicon.ico,html等),也就是说直接可访问到资源的目录。优先级从高到低分别是:

  1. classpath:/META-INF/resources/
  2. classpath:/resources/
  3. classpath:/static/
  4. classpath:/public/
  5. /当前项目的根路径(resources)

WebMvcAutoConfiguration注册的对应的主页:

  1. classpath:/META-INF/resources/index.html
  2. classpath:/resources/index.html
  3. classpath:/static/index.html
  4. classpath:/public/index.html
  5. /index.html

从上到下。所以,如果static里面有个index.html,public下面也有个index.html,则优先会加载static下面的index.html。

静态资源访问前缀

spring:
mvc:
static-path-pattern: /res/**
web:
resources:
static-locations: [classpath:/haha/]

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

例如原先访问地址为{http://localhost:9999/a.png},加上前缀之后的访问地址是『http://localhost:9999/res/a.png』,静态资源处理器会去『 classpath:/META-INF/resources/ classpath:/resources/ classpath:/static/ **classpath:/public/****/:当前项目的根路径』下去寻找index.html。如果配置了static-locations: classpath:/haha,则静态文件会去/haha下找。

自动映射 webjars

        <dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.5.1</version>
</dependency>

访问地址:http://localhost:8080/webjars/jquery/3.5.1/jquery.js 后面地址要按照依赖里面的包路径 <artifactId>,<version>。

welcomePage

  • 静态资源路径下 index.html

    • 可以配置静态资源路径
    • 但是不可以配置静态资源的访问前缀。否则导致 index.html不能被默认访问
  • 配置1依然可以通过ip+port访问welcomePage

  • 配置2不能可以通过ip+port访问welcomePage,只能ip+port/index.html

#配置1
spring:
web:
resources:
static-locations: [classpath:/haha/]
#配置2
spring:
mvc:
static-path-pattern: /res/**
web:
resources:
static-locations: [classpath:/haha/]

favicon.ico

favicon.ico 放在静态资源目录下即可,增加访问前缀会使图标失效

静态资源配置原理

  • SpringBoot启动默认加载 xxxAutoConfiguration 类(自动配置类)
  • SpringMVC功能的自动配置类 WebMvcAutoConfiguration,生效

SpringBoot启动会默认加载很多xxxAutoConfiguration类(自动配置类),其中SpringMVC的大都数功能都集中在WebMvcAutoConfiguration类中,根据条件ConditionalOnxxx注册类对象;WebMvcAutoConfiguration满足以下ConditionalOnxxx条件,类是生效的,并把其对象注册到容器中。

Springboot笔记<5>静态资源访问的更多相关文章

  1. SpringBoot 常用配置 静态资源访问配置/内置tomcat虚拟文件映射路径

    Springboot 再模板引擎中引入Js等文件,出现服务器拒绝访问的错误,需要配置过滤器 静态资源访问配置 @Configuration @EnableWebMvc public class Sta ...

  2. SpringBoot中的静态资源访问

    一.说在前面的话 我们之间介绍过SpringBoot自动配置的原理,基本上是如下: xxxxAutoConfiguration:帮我们给容器中自动配置组件: xxxxProperties:配置类来封装 ...

  3. springboot 静态资源访问,和文件上传 ,以及路径问题

    springboot 静态资源访问: 这是springboot 默认的静态资源访问路径  访问顺序依次从前到后(http://localhost:8080/bb.jpg) spring.resourc ...

  4. SpringBoot静态资源访问+拦截器+Thymeleaf模板引擎实现简单登陆

    在此记录一下这十几天的学习情况,卡在模板引擎这里已经是四天了. 对Springboot的配置有一个比较深刻的认识,在此和大家分享一下初学者入门Spring Boot的注意事项,如果是初学SpringB ...

  5. 聊聊、SpringBoot 静态资源访问

    SpringBoot 1.X 版本和 SpringBoot 2.X 版本在静态资源访问上有一些区别,如果直接从 1.X 升级到 2.X 肯定是有问题的.这篇文章就来讲讲这方面问题,也是项目中的坑. 先 ...

  6. IntelliJ IDEA+SpringBoot中静态资源访问路径陷阱:静态资源访问404

    IntelliJ IDEA+SpringBoot中静态资源访问路径陷阱:静态资源访问404 .embody{ padding:10px 10px 10px; margin:0 -20px; borde ...

  7. springboot + thymeleaf静态资源访问404

    在使用springboot 和thtmeleaf开发时引用静态资源404,静态资源结如下: index.html文件: <!DOCTYPE html> <html xmlns:th= ...

  8. springboot学习入门简易版四---springboot2.0静态资源访问及整合freemarker视图层

    2.4.4 SpringBoot静态资源访问(9) Springboot默认提供静态资源目录位置需放在classpath下,目录名需要符合如下规则 /static  /public  /resourc ...

  9. springboot配置静态资源访问路径

    其实在springboot中静态资源的映射文件是在resources目录下的static文件夹,springboot推荐我们将静态资源放在static文件夹下,因为默认配置就是classpath:/s ...

  10. Spring Boot 静态资源访问原理解析

    一.前言 springboot配置静态资源方式是多种多样,接下来我会介绍其中几种方式,并解析一下其中的原理. 二.使用properties属性进行配置 应该说 spring.mvc.static-pa ...

随机推荐

  1. Chrome浏览器使用AdGuard去除百度热搜

    前言 百度的热搜会分散注意力,chrome 的 AdGuard 插件可以屏蔽广告,还可以屏蔽百度热搜 设置 > 用户过滤器 > 添加以下代码,即可屏蔽百度热搜 baidu.com##div ...

  2. React.memo 解决函数组件重复渲染

    为什么会存在重复渲染? react 在 v16.8 版本引入了全新的 api,叫做 React Hooks,它的使用与以往基于 class component 的组件用法非常的不一样,不再是基于类,而 ...

  3. JavaScript 图片弹窗

    html <!-- 触发弹窗 - 图片改为你的图片地址 --> <img loading="lazy" id="myImg" src=&quo ...

  4. windows linux子系统(Ubuntu)ip地址

    在Windows10安装好了的子系统(Ubuntu)上,安装了nginx 想去访问,使用ipconfig .ip add,查询来的ip地址都跟自己Windows10的ip完全一样,难道Linux子系统 ...

  5. Math类、System类--java进阶day05

    1.Math类 Math类里所有方法都被static修饰,说明它是一个工具类,不需要创建对象,直接类名调用 2.Math方法展示 . 3.System类 SYstem方法展示 1.currentTim ...

  6. 内部类--成员内部类、静态内部类、局部内部类--java进阶day03

    1.内部类 内部类分为4种,成员内部类用处不大,静态内部类和局部内部类更是鸡肋,唯有匿名内部类是需要我们重点掌握的 1.成员内部类 Inter类要访问Outer类的成员可以直接访问,而Outer要访问 ...

  7. 【SpringCloud】zuul路由网关

    zuul路由网关 概述描述 路由基本配置 路由访问映射规则 查看路由信息 过滤器 太老旧了,就不做了解了

  8. 深入掌握FastAPI与OpenAPI规范的高级适配技巧

    title: 深入掌握FastAPI与OpenAPI规范的高级适配技巧 date: 2025/03/30 01:16:11 updated: 2025/03/30 01:16:11 author: c ...

  9. Windows 左ctrl和左alt键互换

    reg代码 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyb ...

  10. 1779. 找到最近的有相同 X 或 Y 坐标的点

    1779. 找到最近的有相同 X 或 Y 坐标的点 class Solution { public int nearestValidPoint(int x, int y, int[][] points ...