【SpringBoot Web开发之静态资源访问】笔记
创始人
2024-12-26 06:07:32
0

详细内容见官方文档:Static Content
在这里插入图片描述

SpringBoot Web开发之静态资源访问

    • 1.准备工作:创建WebDemo
    • 2.静态资源目录
      • 2.1官网原文
      • 2.2静态资源目录
        • 第一步:依照上面2.1官网原文中创建如下目录
        • 第二步:复制粘贴图片到静态资源目录中
        • 第三步:浏览器测试访问静态资源目录下的图片
        • 第四步:静态资源访问前缀
        • 第四步:改变静态资源位置

1.准备工作:创建WebDemo

创建一个SpringBoot的WebDemo,创建WebDemo具体步骤—>【如何创建一个SpringBoot的WebDemo】笔记方法二使用Spring Initializr创建一个Spring Boot项目
按照上述链接笔记中的步骤创建好WebDemo后测试正常运行后再进行下面的步骤,
此时项目的默认端口号应该为8080

2.静态资源目录

2.1官网原文

By default, Spring Boot serves static content from a directory called /static (or /public or /resources or /META-INF/resources) in the classpath or from the root of the ServletContext. It uses the ResourceHttpRequestHandler from Spring MVC so that you can modify that behavior by adding your own WebMvcConfigurer and overriding the addResourceHandlers method.

默认情况下,Spring Boot从类路径中名为/static(或/public或/resources或/META-INF/resources)的目录或ServletContext的根目录提供静态内容。 它使用Spring MVC中的ResourceHttpRequestHandler,因此您可以通过添加自己的WebMvcConfigurer并覆盖addResourceHandlers方法来修改该行为。

2.2静态资源目录

第一步:依照上面2.1官网原文中创建如下目录
  • static
  • /public
  • /resources
  • /META-INF/resources
    选中resources鼠标右键创建上述文件夹
    在这里插入图片描述
第二步:复制粘贴图片到静态资源目录中

任意的选几个图片复制粘贴到目录中
在这里插入图片描述

第三步:浏览器测试访问静态资源目录下的图片

测试结果:在第二步中我们添加的四个图片均能访问
总结

  • 在默认情况下我们访问静态资源的格式为:当前项目根路径/ + 静态资源名,例如虚下面的四个图片的访问
  • 原理: 静态映射/**。
    请求进来,先去找Controller看能不能处理。不能处理的所有请求又都交给静态资源处理器。静态资源也找不到则响应404页面
    http://127.0.0.1:8080/1.jpg
    在这里插入图片描述
    http://127.0.0.1:8080/2.jpg
    在这里插入图片描述
    http://127.0.0.1:8080/3.jpg
    在这里插入图片描述
    http://127.0.0.1:8080/4.jpg
    在这里插入图片描述
    上面我们说了原理,接下来验证一下:
    创建一个Controller,来映射"1.jpg"
package org.example.webdemo.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController {     @GetMapping("/1.jpg")     public String hello(){         return "hello cxk";     } } 

此时我们再来访问127.0.0.1:8080/1.jpg,发现不再显示图片,服务端响应的是我们自定义字符串。
在这里插入图片描述

第四步:静态资源访问前缀

By default, resources are mapped on /** , but you can tune that with the spring.mvc.static-path-pattern property. For instance, relocating all resources to /resources/** can be achieved as follows:

默认情况下,资源映射在/**上,但您可以使用spring.mvc.static-path-pattern属性进行调整。 例如,将所有资源转移到/resources/**可以通过以下方式实现:
在application.yaml中做如下配置

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

此时再去访问127.0.0.1:8080/2.jpg,发现报404了
在这里插入图片描述
访问127.0.0.1:8080/res/2.jpg,发现必须在我们配置res前缀下才能访问静态资源
在这里插入图片描述

第四步:改变静态资源位置

You can also customize the static resource locations by using the spring.web.resources.static-locations property (replacing the default values with a list of directory locations). The root servlet context path, “/”, is automatically added as a location as well.

您还可以使用spring.web.resources.static-locations属性(将默认值替换为目录位置列表)自定义静态资源位置。 根servlet上下文路径"/"也会自动添加为位置。

  • 创建一个hello12345目录,放入一个hello.jpg
    在这里插入图片描述
  • application.yaml配置静态资源位置,将静态资源目录改为hello12345
server:   port: 8080 spring:   mvc:     static-path-pattern: "/res/**"   web:     resources:       static-locations: classpath:/hello12345/ 

在这里插入图片描述

  • 浏览器访问静态资源
    http://127.0.0.1:8080/res/2.jpg,访问2.jpg已经访问不到了
    在这里插入图片描述
    http://127.0.0.1:8080/res/hello.jpg,访问成功静态资源目录位置修改成功
    在这里插入图片描述
    实际上可以配置多个静态资源位置的,下面这种数组的形式就可以映射多个静态资源目录
    static-locations: [classpath:/hello12345/,classpath:/nihao123/]
server:   port: 8080 spring:   mvc:     static-path-pattern: "/res/**"   web:     resources:       static-locations: [classpath:/hello12345/,classpath:/nihao123/] 

在这里插入图片描述
http://127.0.0.1:8080/res/nihao.jpg
在这里插入图片描述

相关内容

热门资讯

据悉!四川游戏家园通用辅助在(... 据悉!四川游戏家园通用辅助在(辅助)本来是真的有辅助软件(有挂解惑)1、四川游戏家园通用辅助在免费辅...
推出新举措!九哥玩辅助软件安装... 推出新举措!九哥玩辅助软件安装(辅助)好像是有辅助方法(有挂工具)1、游戏颠覆性的策略玩法,独创攻略...
2026版教学!途游游戏辅助脚... 2026版教学!途游游戏辅助脚本(辅助)其实是真的有辅助脚本(有挂攻略)途游游戏辅助脚本能透视中分为...
近期!开心泉州免费辅助(辅助)... 近期!开心泉州免费辅助(辅助)其实真的是有辅助脚本(有挂秘诀)该软件可以轻松地帮助玩家将开心泉州免费...
现场直击!佛手在线做辅助下载(... 现场直击!佛手在线做辅助下载(辅助)原来存在有辅助方法(讲解有挂)佛手在线做辅助下载是不是有人用挂微...
2026版总结!都莱辅助器(辅... 2026版总结!都莱辅助器(辅助)本来真的有辅助教程(的确有挂)1、打开软件启动之后找到中间准星的标...
近期!邯郸胡乐挂辅助(辅助)都... 近期!邯郸胡乐挂辅助(辅助)都是是真的有辅助脚本(有挂秘笈)1、每一步都需要思考,不同水平的挑战会更...
这一现象值得深思!微信呢微乐游... 这一现象值得深思!微信呢微乐游戏辅助脚本(辅助)原来是真的有辅助神器(有挂教学)1、微信呢微乐游戏辅...
有玩家发现!四海茶馆游戏辅助(... 有玩家发现!四海茶馆游戏辅助(辅助)其实真的是有辅助工具(真的有挂)1、完成四海茶馆游戏辅助辅助器v...
黑科技辅助挂!青龙辅助器(辅助... 黑科技辅助挂!青龙辅助器(辅助)一贯是有辅助挂(证实有挂)1、让任何用户在无需青龙辅助器安装教程第三...