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:///   这里的斜杠为什么是三条,网上有教程说是要进行转义,但是经过实测一条和三条都是没区别的,有点玄学


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM