解决springboot 无法配置多个静态路径的问题

目录
  • springboot 无法配置多个静态路径
    • 需要在启动类里加一段代码如下:
  • springboot静态路径配置遇到的坑
    • 按照网上一些博客的说法
    • 解决方法

springboot 无法配置多个静态路径

默认static路径是可以访问的,

对接天猫精灵需要额外的放开一个目录aligenie,供天猫精灵端访问,且路径名称无法更改。

这就导致了一个问题,默认识别的静态路径META-INF/resources / resources / static / public 都是spring boot 认为静态资源应该放置的位置,会自动去寻找静态资源。无法识别aligenie路径。

需要在启动类里加一段代码如下:

@Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
                registry.addResourceHandler("/aligenie/**").addResourceLocations("classpath:/aligenie/");
    }

springboot静态路径配置遇到的坑

用springboot做一个项目,遇到一个情况是前端要展示服务器保存的图片,这时候涉及到一个静态路径配置的问题,踩到了一个坑

因为springboot是自带tomcat的,所以我们没必要去改变自己tomcat的设置,只需要在properties.yml里进行配置或者继承WebMvcConfigurationSupport类去写一个配置类,其中yml配置的方法可以自行去找,网上一搜一大把,这里说下用配置类遇到的一个坑

按照网上一些博客的说法

@Configuration
public class UploadConfiguration extends WebMvcConfigurationSupport {
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/upload/**")//这个将应用到url中
                .addResourceLocations("file:///");//这里填的是图片的绝对父路径
        super.addResourceHandlers(registry);
    }
}

这样跑了一下之后发现,虽然图片是可以直接通过url访问到了,但是html、js等其他静态资源(和图片不在同一个文件夹下)访问不到了...

解决方法

虽然现在大家都会前后端分离开发,不会遇到这样的问题,但是既然遇到了,还是得想办法解决一下的,初步猜测的话,是因为配置类覆盖了原来的默认静态路径,导致了新配置起效但是原来的访问不了的情况,所以我们再手动把原来的路径添加进来

@Configuration
public class UploadConfiguration extends WebMvcConfigurationSupport {
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**")
                .addResourceLocations("file:///");//这里是所有静态资源的父文件夹绝对路径,一般是webapps文件夹的路径
        super.addResourceHandlers(registry);
        registry.addResourceHandler("/upload/**")//这个将应用到url中
                .addResourceLocations("file:///");//这里填的是图片的绝对父路径
        super.addResourceHandlers(registry);
    }
}

这样问题就解决了!

最后再提一下,file:/// 这里的斜杠为什么是三条,网上有教程说是要进行转义,但是经过实测一条和三条都是没区别的,有点玄学~

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • SpringBoot静态资源路径配置及主页显示

    静态资源路径 静态资源支持放在以下路径中,访问优先级从上到下: classpath:/META-INF/resources/ classpath:/resources/ classpath:/static/ # 默认路径 classpath:/public/ 其中 classpath 为 src/main/resources 目录. 请求地址为:http://localhost:8080/xx.js 首页 文件位置: classpath:/static/favicon.ico classpath

  • 基于SpringBoot启动类静态资源路径问题

    目录 SpringBoot启动类静态资源路径 SpringBoot核心配置类 分别是一下四个静态资源路径 静态文件存放位置设置 默认配置 自定义位置 SpringBoot启动类静态资源路径 SpringBoot核心配置类 SpringBoot核心JAR包-->spring-boot-autoconfigure-2.2.6.RELEASE.jar 其下面有-->org.springframework.boot.autoconfigure.web 其中有类-->ResourcePropert

  • SpringBoot中配置Web静态资源路径的方法

    介绍: 本文章主要针对web项目中的两个问题进行详细解析介绍:1- 页面跳转404,即controller转发无法跳转页面问题:2- 静态资源文件路径问题. 项目工具: Intelij Idea, JDK1.8, SpringBoot 2.1.3 正文: 准备工作:通过Idea创建一个SpringBoot-web项目,此过程不做赘述,创建完成后项目结构如下图: 1- 创建一个controller代码如下: package com.example.webpractice.controller; i

  • 在SpringBoot中静态资源访问方法

    一.概述 springboot 默认静态资源访问的路径为:/static 或 /public 或 /resources 或 /META-INF/resources 这样的地址都必须定义在src/main/resources目录文件中,这样可以达到在项目启动时候可以自动加载为项目静态地址目录到classpath下 ,静态访问地址其实是使用 ResourceHttpRequestHandler 核心处理器加载到WebMvcConfigurerAdapter进行对addResourceHandlers

  • 浅析SpringBoot2.4 静态资源加载问题

    标题index界面加载问题 刚开始学习springBoot记录一下遇到的小问题 1.index.html加载不出来的问题 我习惯性的将index.html放在public包下 而我使用了thymeleaf,它内置的视图解析器,屏蔽了springBoot的默认视图解析器,只会从templates包下读取视图资源,我将index.html拉到templates包下时就可以正常显示了 2.static包下静态资源加载不出来的问题 看了很多网上大多说的都是配置文件的问题,试了半天都不管用,静下心来从头整

  • 解决springboot 无法配置多个静态路径的问题

    目录 springboot 无法配置多个静态路径 需要在启动类里加一段代码如下: springboot静态路径配置遇到的坑 按照网上一些博客的说法 解决方法 springboot 无法配置多个静态路径 默认static路径是可以访问的, 对接天猫精灵需要额外的放开一个目录aligenie,供天猫精灵端访问,且路径名称无法更改. 这就导致了一个问题,默认识别的静态路径META-INF/resources / resources / static / public 都是spring boot 认为静

  • 解决springboot中配置过滤器以及可能出现的问题

    在springboot添加过滤器有两种方式: 1.通过创建FilterRegistrationBean的方式(建议使用此种方式,统一管理,且通过注解的方式若不是本地调试,如果在filter中需要增加cookie可能会存在写不进前端情况) 2.通过注解@WebFilter的方式 通过创建FilterRegistrationBean的方式创建多个filter以及设置执行顺序: 1.创建两个实现Filter接口的类TestFilter1 .TestFilter2 package com.aoxun.c

  • 解决springboot yml配置 logging.level 报错问题

    如下所示: logging: config: classpath:spring-logback.xml pattern: console: "%d - %msg%n" level: info 直接写 level: info 会报错: org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'logging.level' to java.util.Map

  • 解决springboot 2.x 里面访问静态资源的坑

    目录 springboot 2.x 里面访问静态资源的坑 首先看一下 自动配置类的定义: 如果想要使用自动配置生效 SpringBoot2.x过后static下的静态资源无法访问 springboot 2.x 里面访问静态资源的坑 在spring boot的自定义配置类继承 WebMvcConfigurationSupport 后,发现自动配置的静态资源路径 classpath:/META/resources/,classpath:/resources/,classpath:/static/,c

  • 解决springboot文件配置端口不起作用(默认8080)

    springboot文件配置端口不起作用 1.可能是格式不对,yml要求 :后面有个空格,然后才写数据. 2.可能maven环境没导入好,新手没注意这个,看看项目右边有没有maven的图标,没有就说明没导好maven环境,再看看右下角有没有提示你import maven project ,点击导入即可! yml修改端口无效(SpringBoot中) 在yml文件中,修改端口: 启动后,若发现没反应,则修改为: 解决 以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们.

  • 在SpringBoot中配置Thymeleaf的模板路径方式

    目录 配置Thymeleaf的模板路径 关于thymeleaf配置说明 配置Thymeleaf的模板路径 众所周知,Thymeleaf的模板文件默认是在项目文件夹的src\main\resources\templates目录下的. 不过出于特殊需要,要修改其路径怎么办呢? 在我们的项目配置文件application.properties中,添加如下配置: #Thymeleaf配置 spring.thymeleaf.prefix=自定义的Thymeleaf的模板位置,jar内部以classpath

  • SpringBoot无法访问/static下静态资源的解决

    SpringBoot无法访问/static下静态资源 SpringBoot 访问静态资源的规则 都在WebMvcAutoConfiguration自动配置类中 在该类下有对资源处理的方法 默认按照该加载顺序,加载静态资源文件,而我尝试了N次,浏览器无法访问资源:查看官网后,我又修改了默认的加载位置.如下: spring.resources.static-locations=/static/ 但是还是没有能如期访问! 而回过头再回过头看Web的自动配置类,我发现了一个被忽略的配置 在WebMvcC

  • spring boot如何配置静态路径详解(404出现的坑)

    目录 一  前言 二  漫长的调试之路 总结 一  前言 最近有个项目,需要上传一个zip文件(zip文件就是一堆的html压缩组成)的压缩文件,然后后端解压出来,用户可以预览上传好的文件. 查看资料,spring boot对静态文件,可以通过配置路径的方式来实现. @Slf4j @Configuration public class WebMvcConfig extends WebMvcConfigurationSupport { @Resource private PermissionInt

  • springboot 默认静态路径实例解析

    这篇文章主要介绍了springboot 默认静态路径实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下所示 类ResourceProperties.class private static final String[] CLASSPATH_RESOURCE_LOCATIONS = new String[]{"classpath:/META-INF/resources/", "classpath:/resourc

随机推荐