SpringBoot静态资源处理(九)下

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: SpringBoot静态资源处理(九)

二.一 继承 WebMvcConfigurerAdapter 接口进行配置


在 controller 同级目录下 创建 config 包,config 包下创建 MvcConfig 类


二.一.一 全局配置


package top.yueshushu.learn.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
/**
 * @ClassName:MvcConfig
 * @Description TODO
 * @Author zk_yjl
 * @Date 2021/6/29 16:31
 * @Version 1.0
 * @Since 1.0
 **/
@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {
    /**
     * 配置静态的资源信息
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
       registry.addResourceHandler(
               "/**"  //路径是 /** 
       ).addResourceLocations(
               "classpath:/templates/"   //对应的目录是  templates目录
       );
    }
}


resourceHandler 表示的是请求的路径, resourceLocations 表示的是该请求路径对应的资源目录信息, 是一一对应的,


可以同时注册多个。


重新启动项目:


输入路径: http://localhost:8081/Static/index.html


f74c94d7c1995d733b37dae8b671dea6.png


发现,可以访问到 templates/index.html 文件内容了。


此时,注意,以前的 SpringBoot提供的默认的四种目录无法访问到


b903b660a29c9e966576b9d992438241.png


二.一.二 指定路径配置


访问 index.html 时,没有使用任何路径前缀,这是因为 addResourceHandler 使用的是 /**


也可以进行指定


@Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
      /* registry.addResourceHandler(
               "/**"
       ).addResourceLocations(
               "classpath:/templates/"
       );*/
        registry.addResourceHandler(
                "/yjl/**"   //对应路径的路径是  yjl/
        ).addResourceLocations(
                "classpath:/templates/"  //目录是  templates
        );
    }


前面添加了 /yjl/ 目录


直接输入


aa5ef7062345009b5a2374f33465cd26.png


会发现,报 404


需要添加 /yjl 路径前缀才可以


45b315e7dfdd4f9a64c4caef30a41c12.png


注意此时:


ebdd2cdc218fbb8e176f098f285b91ac.png


访问原先的SpringBoot提供的那四种默认目录下的文件,是可以访问的。


addResourceHandler 的值 已经不是 /** 了,就不会替换默认的了,当配置了 /**时,就会将SpringBoot默认提供的替换。


二.一.三 配置多个路径


再新创建两个目录 s1, s2


8ea27cc6a04f9af8bbc29dce2069681f.png


  @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
      /* registry.addResourceHandler(
               "/**"
       ).addResourceLocations(
               "classpath:/templates/"
       );*/
        registry.addResourceHandler(
                "/yjl/**"   //对应路径的路径是  yjl/
        ).addResourceLocations(
                "classpath:/templates/"  //目录是  templates
        );
        registry.addResourceHandler(
                "s1/**"   //目录s1
        ).addResourceLocations(
                "classpath:/s1/"
        );
        registry.addResourceHandler("s2/**")   //目录s2
                .addResourceLocations("classpath:/s2/");
    }


进行访问:


e74ad45adbd4e47e9c3067639a545096.png


fdc24bcafcf01f00ada6695e3db3e661.png


通常采用的是这一种方式


二.二 配置文件进行配置资源信息


先在 MvcConfig 类中,去掉 @Configuration 注解。


在 application.yml 配置文件的 spring目录下,添加配置信息(只放置spring目录相关的配置信息)


# 引入 数据库的相关配置
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springboot?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true
    username: root
    password: abc123
    type: com.alibaba.druid.pool.DruidDataSource
  #配置资源信息
  mvc:
    static-path-pattern: /yjl/** #配置信息,不要忘记 /**表示,任意多层目录
  resources:
    static-locations: [classpath:/templates]   # 写一个的话,会将以前的全部覆盖掉。


重启项目,发现


d2a89796216f9dba7b78ea2fc51a5213.png


s1.html 无法访问到


df5e6ff50ae3cfc05b38aeb89bfa9f9d.png


SpringBoot提供的默认目录文件无法访问到


282d23203435656b6fd4fe45a2612b59.png


直接 index.html 无法访问到


4f4fba47cae46e2af33e98f00244d8ca.png


最前面添加 yjl 之后,才可以访问到。


static-locations 可以配置多个


# 引入 数据库的相关配置
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springboot?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true
    username: root
    password: abc123
    type: com.alibaba.druid.pool.DruidDataSource
  #配置资源信息
  mvc:
    static-path-pattern: /**    # 原先的会清除掉
  resources:
    static-locations: [classpath:/templates,classpath:/s1,classpath:/s2,classpath:/public,classpath:/static]   # 配置多个


这个时候, s1目录,s2目录,templates目录, public目录,static目录均可以进行访问。


但是 resources目录并没有配置,所以无法访问到(不知道为什么,d.html竟然可以访问到)。


b可以访问到:


25b3e372d0385c22efa15ac04f51ed2a.png


c无法访问到:


8e031f90609926df42c1b66564b476df.png


通常采用第一种方式进行配置资源信息。


本章节的代码放置在 github 上:


https://github.com/yuejianli/springboot/tree/develop/Static


谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
JavaScript 前端开发 Java
SpringBoot之静态资源规则与定制化
SpringBoot之静态资源规则与定制化
|
1月前
|
移动开发 Java HTML5
Springboot web静态资源配置
Springboot web静态资源配置
67 0
|
1月前
|
前端开发 JavaScript Java
Springboot 使用thymeleaf 服务器无法加载resources中的静态资源异常处理
Springboot 使用thymeleaf 服务器无法加载resources中的静态资源异常处理
318 0
|
21天前
|
搜索推荐 前端开发 JavaScript
SpringBoot静态资源访问控制和封装集成方案
该文档描述了对基于SpringBoot的项目框架进行优化和整合的过程。原先采用前后端分离,后端兼做前端,但随着项目增多,升级维护变得复杂。因此,决定整合后台管理页面与后端代码,统一发布。设计上,框架包含后台管理资源,项目则配置具体业务页面,项目可通过覆盖框架资源实现个性化。关键步骤包括:自定义静态资源访问路径、解决图标与字体文件访问问题、设定自定义欢迎页面和页面图标,以及确保项目能正确访问框架静态资源。通过扫描jar包、解压和拷贝资源到项目目录,实现了框架静态资源的动态加载。此外,调整静态资源访问优先级,保证正确加载。最终实现支持jar和war包的项目结构优化。
59 4
|
1月前
|
前端开发 JavaScript Java
Springboot静态资源访问、上传、回显和下载
Springboot静态资源访问、上传、回显和下载
Springboot静态资源访问、上传、回显和下载
|
8月前
|
Java Spring
springboot中的静态资源规则~
springboot中的静态资源规则~
|
10月前
|
前端开发 JavaScript Java
Spring Boot入门(十四) 之 静态资源的引入
Spring Boot入门(十四) 之 静态资源的引入
|
1月前
|
Java
Springboot配置静态资源
Springboot配置静态资源
24 1
|
1月前
|
前端开发 JavaScript Java
Spring Boot中Spring MVC的基本配置讲解与实战(包括静态资源配置,拦截器配置,文件上传配置及实战 附源码)
Spring Boot中Spring MVC的基本配置讲解与实战(包括静态资源配置,拦截器配置,文件上传配置及实战 附源码)
88 1
|
1月前
|
Java
springboot WebMvcConfigurer详解自定义配置请求静态资源
springboot WebMvcConfigurer详解自定义配置请求静态资源